UITextView phù hợp với UITextInput, trong đó mô tả chi tiết có thể được tìm thấy here.
Hãy xem các phương thức bắt buộc "textRangeFromPosition: toPosition:", "positionFromPosition: offset:", "positionFromPosition: inDirection: offset:" và một số phương thức dựa trên hình học khác trong Giao thức UITextInput. Những người có thể cung cấp các chức năng mà bạn đang tìm kiếm.
Tôi chưa thực sự cố gắng đảm bảo những công việc này theo cách bạn muốn, nhưng trông giống như những gì bạn cần.
Hãy cho tôi biết nếu bạn cần thêm trợ giúp nào!
UPDATE:
Dưới đây là một số mẫu mã như thế nào để làm điều này. Tôi đã nhận được phương thức "firstRectForRange:" để làm việc. Mã này về cơ bản có ba chữ cái cuối cùng của "textStuff" UITextView và làm nổi bật nó màu xanh lục.
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];
Kết quả chạy mã này:
Đây là cách thực hiện. https://discussions.apple.com/thread/2511930?start=0&tstart=0 –