【问题标题】:iOS stringByEvaluatingJavaScriptFromString - UI freezeiOS stringByEvaluatingJavaScriptFromString - UI 冻结
【发布时间】:2014-01-28 00:08:05
【问题描述】:

在我的 iOS 应用程序(一种闪存卡应用程序)中,我使用的是 UIWebView,一旦 webview 内容加载完成,我需要执行一些 UI 操作(更改)。
我正在webViewDidFinishLoad 中检查这个。
当用户点击卡片时,卡片会翻转并加载不同的内容。我在flipActionswipeAction 中使用下面的代码(当用户从​​一张卡移动到另一张卡时)来检查:

if (![[myWebView stringByEvaluatingJavaScriptFromString:@"document.readyState"] isEqualToString:@"complete"])
{
    [self performSelector:@selector(myCustomMethod:) withObject:self afterDelay:3.0];
}

有时,并非总是如此,我的 UI 会在上述 if 条件下冻结,之后 UI 将不再响应。该应用必须手动终止并重新启动。

我需要调用stringByEvaluatingJavaScriptFromString: 线程以外的方法吗? 或者这可能是什么原因?

【问题讨论】:

  • 您是否在 if 块中执行一些 UI 更新?您发布的代码是否在主线程上运行?
  • 是的,我只使用主线程执行 UI 更新。

标签: ios iphone objective-c uiwebview stringbyevaluatingjavascr


【解决方案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-06-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2015-01-16
    • 2019-09-16
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    相关资源
    最近更新 更多