2013-07-18 4 views
2

Я работал над подсветкой текста в 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

ответ

2

смотрите по этой ссылке:

UIWebView Text Highlighting solution

Это может быть полезно для вас.

Удачи !!!

+0

Я пробовал это, но document.execCommand не выполняется. это зависит от браузера? – user2515456

Смежные вопросы