在我的iOS应用程序(一种flashCard应用程序)中,我正在使用UIWebView
,一旦webview
内容加载完成,我需要执行一些UI操作(更改)。
我正在webViewDidFinishLoad
检查这件事
当用户点击卡片时,它将翻转并且加载不同的内容。我在此flipAction
以及swipeAction
中使用以下代码(当用户从一张卡片移动到另一张卡片时)以检查:
if (![[myWebView stringByEvaluatingJavaScriptFromString:@"document.readyState"] isEqualToString:@"complete"])
{
[self performSelector:@selector(myCustomMethod:) withObject:self afterDelay:3.0];
}
有时候,并非总是如此,我的UI会冻结上述if条件,之后UI将不会进一步响应。该应用必须手动杀死并重新启动。
我是否需要调用stringByEvaluatingJavaScriptFromString
:除线程以外的方法?
或者可能是什么原因?
答案 0 :(得分:1)
您可以尝试后台线程
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
// async operation
// Call your method here
dispatch_sync(dispatch_get_main_queue(), ^{
// Update UI here
});
});