How can I get the selected text frame from a UITextView

后端 未结 2 1262
抹茶落季
抹茶落季 2020-12-07 23:47

I\'m trying to display an UIPopoverController from the rect of a selected text in an UITextView, How can I get the selected text CGRect

2条回答
  •  無奈伤痛
    2020-12-08 00:30

    I think [UITextInput selectedTextRange] and [UITextInput caretRectForPosition:] is what you are looking for.

    [UITextInput selectedTextRange] returns the selected range in character

    [UITextInput caretRectForPosition:] returns the CGRect of the character range in this input.

    UITextView conforms to UITextInput (since iOS 5), so you can use these methods for your UITextView instance.

    It is going to be something like this.

    UITextRange * selectionRange = [textView selectedTextRange];
    CGRect selectionStartRect = [textView caretRectForPosition:selectionRange.start];
    CGRect selectionEndRect = [textView caretRectForPosition:selectionRange.end];
    CGPoint selectionCenterPoint = (CGPoint){(selectionStartRect.origin.x + selectionEndRect.origin.x)/2,(selectionStartRect.origin.y + selectionStartRect.size.height / 2)};
    

    EDIT : Since the sample code became a little hard to get, I added an image for complementing.

    An image that illustrates what local variables represent

提交回复
热议问题