2014-01-27 131 views
0

在我的iOS應用程序(一種flashCard應用程序)中,我使用的是UIWebView,一旦webview內容加載完成,我需要執行一些UI操作(更改)。
我在webViewDidFinishLoad檢查了這個。
當用戶點擊一張卡片時,它將翻轉並加載不同的內容。我使用下面的代碼在此flipAction以及在swipeAction(當從一張卡到另一用戶移動時)檢查:iOS stringByEvaluatingJavaScriptFromString - UI凍結

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

有時候,並非總是如此,我的用戶界面將凍結上述if條件和後該用戶界面將不會進一步響應。該應用程序必須手動殺死並重新啓動。

我需要撥打stringByEvaluatingJavaScriptFromString:線程以外的方法嗎? 或這可能是什麼原因?

+0

你在if塊來執行一些UI更新?您發佈的代碼是否在主線程上運行? – tanzolone

+0

雅我只使用主線程執行UI更新。 – Smith

回答

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 

       }); 
    });