0

Я звоню с помощью JavaScript, используя stringByEvaluatingJavaScriptFromString. У меня есть UISlider и другие элементы пользовательского интерфейса, работающие одновременно. Весь пользовательский интерфейс зависает при вызове JavaScript. Я огляделся вокруг и узнал, что решение требует решения асинхронного вызова.stringByEvaluatingJavaScriptFromString вызывает зависание пользовательского интерфейса

Я попробовал два подхода:

[webView performSelectorOnMainThread:@selector(stringByEvaluatingJavaScriptFromString:) withObject:func waitUntilDone:NO]

И это:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul); 
      dispatch_async(queue, ^{ 
       [webView performSelectorOnMainThread:@selector(stringByEvaluatingJavaScriptFromString:) withObject:func waitUntilDone:NO]; 

     }); 

Но все это не похоже на работу. Мой пользовательский интерфейс все еще зависает на долю секунды, что заметно. Что мне не хватает?

ответ

0

Попробуйте это: -

dispatch_async(dispatch_get_main_queue(), ^{ 
    [webView stringByEvaluatingJavaScriptFromString:func]; 

}); 
+0

такой же результат .. все еще зависает. – blancos

+0

затем PLZ проверить ваш скрипт, –

0

performSelectorOnMainThread: выполняется на главном потоке (Нить UI).
Я думаю, что ошибка в вашем JavaScript, скрипт выполняется бесконечно.

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