UITextView は UITextInput に準拠しており、詳細な説明についてはこちらを参照してください。
必要なメソッド「textRangeFromPosition:toPosition:」、「positionFromPosition:offset:」、「positionFromPosition:inDirection:offset:」、および UITextInput プロトコルのその他のジオメトリベースのメソッドを見てください。それらはあなたが探している機能を提供するかもしれません。
私は実際にこれらがあなたが望むように機能することを確認しようとはしていませんが、それはあなたが必要としているもののように見えます.
さらにサポートが必要な場合はお知らせください。
アップデート:
これを行う方法のサンプルコードを次に示します。「firstRectForRange:」メソッドが機能するようになりました。このコードは基本的に、UITextView の「textStuff」の最後の 3 文字を取得し、緑色で強調表示します。
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];
このコードを実行した結果: