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