如何获取 UIWebView 中选定文本的坐标(CGRect)?
Posted
技术标签:
【中文标题】如何获取 UIWebView 中选定文本的坐标(CGRect)?【英文标题】:How to get coordinates (CGRect) for the selected text in UIWebView? 【发布时间】:2011-11-22 19:11:53 【问题描述】:我有简单的 UIWebView 和加载的 html。 我想显示指向所选文本的 PopoverView。 我可以获取 UIMenuController 的 menuFrame 并使用它的矩形,但结果在屏幕的角落并不像我需要的那样准确。 我可以计算屏幕大小并获取 menuFrame rect,然后我可以假设可以在哪里找到选择,但我想确切地知道所选文本在哪里。 一般可以吗?
【问题讨论】:
【参考方案1】:您可以在选定文本的范围对象上使用 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 所选文本的开始和结束范围以上是关于如何获取 UIWebView 中选定文本的坐标(CGRect)?的主要内容,如果未能解决你的问题,请参考以下文章