webview(wkWebView) ios startProvisionalnavigation on the mai



我需要在主线程上运行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 操作。

相关内容