0

在我的 iOS 应用程序(一种闪存卡应用程序)中,我正在使用 a 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:线程以外的方法吗?或者这可能是什么原因?

4

1 回答 1

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

                });
    });
于 2014-01-27T16:08:05.050 回答