2

我一直致力于在 UIwebview 中突出显示文本。其中我使用了 canPerformAction 方法,在该方法中我调用了一个 javascript 函数来突出显示文本。让我们看看我的 webview 中的文字是“这部分非常混乱而且非常零星”。在这里,如果我单独选择文本“so”没有问题,它会突出显示文本。

但是,让我选择超过 1 个单词,例如“so Confusing and”,它会突出显示,但它会进入无限循环并继续调用 canPerformAction 方法。我不知道为什么会这样。

在 iPad 中,如果您长按将被选中的文本。我的方法在这里被调用并突出显示选定的文本。然后,如果我拖动蓝线以选择更多的文本(我希望你能理解我在说什么),那么 canPerformAction 被调用,它会进入无限循环。

我正在检查模拟器。

已更新: 我尝试了您所说的那些事情,如下所示

NSString *selectedString = @"function getSelText()"
                                "{"
                                "alert('document.execute');"
                                "var sel = window.getSelection();"
                                "if(!sel.isCollapsed){"
                                "var selRange = sel.getRangeAt(0);"
                                "document.designMode = 'on';"
                                "sel.removeAllRanges();"
                                "sel.addRange(selRange);"
                                "alert('document.execute 2');"
                                "document.execCommand('HiliteColor', false, '#ffffcc');"
                                "alert('document.execute 3');"
                                "sel.removeAllRanges();"
                                "document.designMode = 'off';"
                                "alert('document.execute 4');"
                                "}"
                                "}";
[webView stringByEvaluatingJavaScriptFromString:selectedString];

I have given the above code in webViewDidFinishLoad.

In CanPerformAction I gave
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{

    if(action == @selector(selectAll:)){

        NSString *setHighlightColorRuling = [NSString stringWithFormat:@"getSelText()"];
        [webView stringByEvaluatingJavaScriptFromString:setHighlightColorRuling];

        return YES;

    }
    return [super canPerformAction:action withSender:sender];

}

在模拟器中运行时,直到最后一个“document.execute 4”出现警报,但在 webview 中没有效果

4

0 回答 0