我一直致力于在 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 中没有效果