15

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

4

1 回答 1

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;
}
于 2011-10-11T11:30:52.527 回答