Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在UIWebView中获取所选文本的坐标(CGRect)?_Ios_Uiwebview_Coordinates_Cgrect_Textselection - Fatal编程技术网

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

Ios 如何在UIWebView中获取所选文本的坐标(CGRect)?,ios,uiwebview,coordinates,cgrect,textselection,Ios,Uiwebview,Coordinates,Cgrect,Textselection,我有一个加载html的简单UIWebView。 我想显示指向所选文本的PopoverView。 我可以获得UIMenuController的menuFrame并使用它的rect,但结果在屏幕的各个角落并不像我需要的那样精确。 我可以计算屏幕大小并得到menuFrame rect,然后我可以假设在哪里可以找到选择,但我想确切地知道选择的文本在哪里。 通常可能吗?您可以在所选文本的范围对象上使用javascript函数getBoundingClientRect()。 我就是这样做的: functio

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

您可以在所选文本的范围对象上使用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)}您能帮我一下吗?如果我们设置了UIWebView的scalesPageToFit属性,那么它就不能正常工作。任何其他相同的解决方案。如何获得webview选定文本的开始和结束范围