2011-09-22 74 views
15

我有简单的UIWebView与加载的HTML。 我想显示指向选定文本的PopoverView。 我可以得到UIMenuController的menuFrame并使用它的矩形,但结果并不像我需要的那样精确。 我可以计算屏幕大小,并得到menuFrame矩形,然后我可以假设选择可能被发现的地方,但我想知道选定的文本在哪里。 一般可能吗?如何获取UIWebView中选定文本的坐标(CGRect)?

回答

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; 
} 
+0

我都试过,但它返回{(0,0),(0 ,0)}你能帮我吗 – dineshprasanna

+1

如果我们设置UIWebView的scalesPageToFit属性,那么它不会按预期工作。任何其他解决方案相同。? – Girish

+0

它是否适用于pdf文件? –

相关问题