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

我有简单的UIWebView与加载的HTML。 我想显示指向选定文本的PopoverView。 我可以得到UIMenuController的menuFrame并使用它的矩形,但是结果并不像我所需要的那样精确。 我可以计算屏幕大小,并得到menuFrame矩形,然后我可以假设哪里可以findselect,但我想知道在哪里select的文本。 一般可能吗?

您可以在选定文本的范围对象上使用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; }