我使用stringByEvaluatingJavaScriptFromString
调用JavaScript。我有UISlider
和其他UI元素同时工作。当JavaScript调用发生时,我的整个UI都会冻结。我环顾四周,发现了这个
异步调用应解决问题。
我尝试了两种方法:
[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];
});
但这似乎都不起作用。我的UI仍然会冻结一秒钟,这是显而易见的。我错过了什么?
答案 0 :(得分:0)
试试这个: -
dispatch_async(dispatch_get_main_queue(), ^{
[webView stringByEvaluatingJavaScriptFromString:func];
});
答案 1 :(得分:0)
performSelectorOnMainThread:在主线程(UI的线程)上执行 我认为JavaScript中的错误,脚本无限执行。