2017-03-15 29 views
0

對於UIWebviewWKWebview在iOS上,委託方法:如何馬上知道內容的WebView顯示爲iOS

webViewDidFinishLoad:(UIWebView *)webView 

(void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation 

被調用時所有資源裝載成功,但是,在調用這些方法之前,內容已顯示幾秒鐘。

現在,我想觀察內容顯示在Webview上的時間,任何人有一個好主意請告訴我,謝謝。

+0

可能的複製[如何檢測UIWebView何時完全加載?](http://stackoverflow.com/questions/25445451/how-to-detect-when-a-uiwebview-has-completely-finished-loading) –

回答

0

當整個網站被加載時,Webview完成加載被調用。

加載html後,您的網站必須加載一些javascript和css腳本。

因此,網站顯示,而JavaScript仍在加載。

因此,整個網站實際上加載一旦一切都加載。

理想的解決方案是向用戶展示這一點。進度。

0

您必須使用WKWebView來跟蹤加載進度。

首先,您必須添加觀察者才能聽取進度。

[self.webView addObserver:self forKeyPath:@"loading" options:NSKeyValueObservingOptionNew context:nil]; 
[self.webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil]; 

然後,當網絡開始加載您在本方法處理:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ 
    if ([keyPath isEqualToString:@"loading"]) { 
     if (!self.webView.isLoading) { 
      // Finished loading. 
     } 

    } 
    else if ([keyPath isEqualToString:@"estimatedProgress"]){ 
      float progress = _webView.estimatedProgress; // Do whatever you want with the progress   
    } 
} 

此外,此委託方法被調用時,Web視圖開始加載內容:

- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation{ 
    // The web starts loading contents. 
}