我需要在主线程上运行webview(WKWEbView(。我正在通过dispatch_get_main_queue取得成功。
即
dispatch_async(dispatch_get_main_queue(), ^{
[thisClass alertView]; // alertview method show a webview..
});
//webview完美地显示在应用程序上。
现在,我想在打开 Web 视图之前放置进度条(渲染过程(。下面的方法主线程上的单个方法工作正常。但是我的网络视图在另一个线程中。
如何调用下面的方法或使用webView(WKWEbView(附加到该方法
-(void)webView:webView didFinishNavigation:(WKNavigation *)navigation{
NSLog(@"Call ::didFinishNavigation");
[indicator stopAnimating];
}
-(void)webView:webView didStartProvisionalNavigation:(WKNavigation *)navigation{
NSLog(@"Call :: webViewDidStartLoad");
indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
indicator.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
indicator.center = self.view.center;
[self.view addSubview:indicator];
[indicator bringSubviewToFront:self.view];
[UIApplication sharedApplication].networkActivityIndicatorVisible = TRUE;
[indicator startAnimating];
}
问题1:是否可以从另一个线程使用所有默认方法?
问题 2: 问题 1 -> 是的,如何?
不,这是不可能的。即使您通过App Store分发应用程序,有时也会在崩溃日志中出现奇怪的错误。您应该始终在主线程中运行所有 UIKit 和 WebKit 操作。