如何在UIWebView中获取所选文本的坐标(CGRect)?

时间:2011-09-22 12:22:49

标签: ios uiwebview coordinates cgrect textselection

我有简单的UIWebView加载了html。 我想显示指向所选文本的PopoverView。 我可以获取UIMenuController的menuFrame并使用它的rect,但结果并不像我需要的那样在屏幕的角落准确。 我可以计算屏幕大小并获取menuFrame rect然后我可以假设可以找到选择的位置,但我想知道所选文本的位置。 通常可能吗?

1 个答案:

答案 0 :(得分:15)

您可以在所选文本的范围对象上使用javascript函数getBoundingClientRect()。 我就是这样做的:

function getRectForSelectedText() {
    var selection = window.getSelection(); 
    var range = selection.getRangeAt(0); 
    var rect = range.getBoundingClientRect(); 
    return "{{" + rect.left + "," + rect.top + "}, {" + rect.width + "," + rect.height + "}}";
}

并且在UIWebView上的类别中,您可以像这样使用它:

- (CGRect)rectForSelectedText{
    CGRect selectedTextFrame = CGRectFromString([self stringByEvaluatingJavaScriptFromString:@"getRectForSelectedText()"]);
    return selectedTextFrame;
}