UITextView è conforme a UITextInput, di cui è possibile trovare una descrizione dettagliata here.
Date un'occhiata ai metodi richiesti "textRangeFromPosition: toPosition:", "positionFromPosition: offset:", "positionFromPosition: inDirection: offset:", e alcuni degli altri metodi geometrici basati nel protocollo UITextInput. Quelli potrebbero fornire la funzionalità che stai cercando.
Non ho effettivamente provato a fare in modo che funzionino come vuoi tu, ma sembra proprio quello che ti serve.
Fammi sapere se hai bisogno di ulteriore aiuto!
UPDATE:
Ecco alcuni esempi di codice di come fare questo. Ho finito per ottenere il metodo "firstRectForRange:" per funzionare. Questo codice prende sostanzialmente le ultime tre lettere di UITextView "textStuff" e lo evidenzia in verde.
UITextView *textStuff = [[UITextView alloc] init];
textStuff.frame = CGRectMake(2.0, 200.0, 200.0, 40.0);
textStuff.text = @"how are you today?";
textStuff.textColor = [UIColor blackColor];
UITextPosition *Pos2 = [textStuff positionFromPosition: textStuff.endOfDocument offset: nil];
UITextPosition *Pos1 = [textStuff positionFromPosition: textStuff.endOfDocument offset: -3];
UITextRange *range = [textStuff textRangeFromPosition:Pos1 toPosition:Pos2];
CGRect result1 = [textStuff firstRectForRange:(UITextRange *)range ];
NSLog(@"%f, %f", result1.origin.x, result1.origin.y);
UIView *view1 = [[UIView alloc] initWithFrame:result1];
view1.backgroundColor = [UIColor colorWithRed:0.2f green:0.5f blue:0.2f alpha:0.4f];
[textStuff addSubview:view1];
risultato dell'esecuzione di questo codice:
Ecco come. https://discussions.apple.com/thread/2511930?start=0&tstart=0 –