【问题标题】:How to get coordinates (CGRect) for the selected text in UIWebView?如何获取 UIWebView 中选定文本的坐标(CGRect)?
【发布时间】:2011-11-22 19:11:53
【问题描述】:

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

【问题讨论】:

    标签: ios uiwebview coordinates cgrect textselection


    【解决方案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 所选文本的开始和结束范围
    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多