使用WebViewJavascriptBridge導致didCommitNavigation代理方法不調用

由於程序內使用了一些交互方法,所以選擇了WebViewJavascriptBridge這個三方框架結合WKWebView實現。

最近出了一個需求,當網頁開始加載時要使用原生APP的loading圖,然後再加載結束時隱藏掉這個loading圖。當做完之後,發現網頁內文字加載出來後,有些圖片和視頻控件加載速度特別慢,loading圖有點遮擋內容和影響操作,所以要在文字加載出來的時候就隱藏掉這個loading圖。

本以爲就是在當前網頁控制器內簡單加一下這個代理方法- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation{},在這個方法內關閉loading就行了。結果發現各個代理方法都能正常監聽,就這個方法監聽不到,找來找去終於發現問題所在,WebViewJavascriptBridge這個庫沒有實現這個方法,所以只需要找到框架內WebViewJavascriptBridge.m這個文件,然後加入下邊這個方法即可。

// 當內容開始返回時調用

- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation {

    if (webView != _webView) { return; }

    __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate;

    if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:didCommitNavigation:)]) {

        [strongDelegate webView:webView didCommitNavigation:navigation];

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章