Moving UITextView cursor to a CGPoint

2019-08-03 08:18发布

问题:

Am trying to make a UITextView behave the way the one in Notes does, i.e. you tap to make it editable (turning off the data detectors) then the cursor moves to where you tapped.

Got the tap-to-edit part working with a UITapGestureRecognizer, but how on earth do you translate the tap's CGPoint into a NSRange for moving the cursor?

I don't have the luxury of doing this under 5.0 (no UITextInput for the UITextView, ack). Also needs to be public API's, no private stuff.

Thanks in advance. :)

回答1:

UITextPosition * position=[textView closestPositionToPoint:CGPointMake(20, 20)];
[textView setSelectedTextRange:[textView textRangeFromPosition:position toPosition:position]];