我刚注意到webViewDidFinishLoad方法阻止了整个应用程序,因此我甚至无法触摸任何按钮。
我需要解析UIWebView的结果页面,这可能需要花费很多时间。那么在不阻塞整个应用程序的情况下解析它的最佳方法是什么?也许创造另一个线程?
答案 0 :(得分:3)
使用GCD在后台解析它:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
// Get the contents from the UIWebView (in the main thread)
NSString *data = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Parse the data here
dispatch_sync(dispatch_get_main_queue(), ^{
// Update the UI here
});
});
}
答案 1 :(得分:0)
在主线程上调用是正常的-webViewDidFinishLoad
。您需要做的是获取html并通过将其分派到另一个队列来执行解析操作。