Я работал над подсветкой текста в UIwebview. В этом я использовал метод canPerformAction, в котором я вызываю функцию javascript, чтобы выделить текст. Давайте возьмем текст в моем веб-обзоре «часть настолько запутанная и очень спорадическая». Здесь, если я выбираю текст «так» в одиночку, нет проблем, и он выделяет текст.Невозможно выделить текст в UIWebview?
Но давайте возьмем, чтобы выбрать более одного слова, например «так запутанно», и оно выделяется, но оно пробегает бесконечный цикл и продолжает называть метод 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
Я пробовал это, но document.execCommand не выполняется. это зависит от браузера? – user2515456