WKWebView的代理方法解析

1.導航代理?WKNavigationDelegate ?? 跟蹤主框架導航進度和決定的方法

1.1

/**

*? 在發(fā)送請求之前,決定是否跳轉 (攔截url 從而達到js與oc交互的代碼方法 就是這個)

*

*? @param webView? ? ? ? ? 實現(xiàn)該代理的 webView

*? @param navigationAction 當前navigationAction?有關觸發(fā)導航請求的操作的描述性信息。

*? @param decisionHandler? 是否調轉block

*/

- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler;

1.2

**

*? 在收到響應后,決定是否跳轉?

*

*? @param webView? ? ? ? ? ? 實現(xiàn)該代理的webview

*? @param navigationResponse當前navigationAction?有關觸發(fā)導航請求的操作的描述性信息。

*? @param decisionHandler? ? 是否跳轉block

*/

- (void)webView:(WKWebView*)webView decidePolicyForNavigationResponse:(WKNavigationResponse*)navigationResponse decisionHandler:(void(^)(WKNavigationResponsePolicy))decisionHandler;



1.3

/**

*? 頁面開始加載時調用

*

*? @param webView? ? 實現(xiàn)該代理的webview

*? @param navigation有關觸發(fā)導航請求的操作的描述性信息。

*/

- (void)webView:(WKWebView*)webView didStartProvisionalNavigation:(null_unspecifiedWKNavigation*)navigation;

1.4

/**

*? 接收到服務器跳轉請求之后調用

*

*? @param webView? ? ? 實現(xiàn)該代理的webview

*? @param navigation? 當前navigation

*/

- (void)webView:(WKWebView*)webView didReceiveServerRedirectForProvisionalNavigation:(null_unspecifiedWKNavigation*)navigation;

1.5

/**

*? 加載失敗時調用

*

*? @param webView? ? 實現(xiàn)該代理的webview

*? @param navigation 當前navigation

*? @param error? ? ? 錯誤

*/

1.6

/**

*? 當內容開始返回時調用

*

*? @param webView? ? 實現(xiàn)該代理的webview

*? @param navigation 當前navigation

*/

- (void)webView:(WKWebView*)webView didFailProvisionalNavigation:(null_unspecifiedWKNavigation*)navigation withError:(NSError*)error;

1.7

/** * 頁面加載完成之后調用

?* * ?@param webView 實現(xiàn)該代理的webview?

* @param navigation 當前navigation

?*/

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


1.8// 導航失敗時會回調

- (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error ;

1.9

/ 對于HTTPS的都會觸發(fā)此代理,如果不要求驗證,傳默認就行

// 如果需要證書驗證,與使用AFN進行HTTPS證書驗證是一樣的

- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition,NSURLCredential *__nullable credential))completionHandler

2?WKUIDelegate UI 代理

2.1// 創(chuàng)建一個新的WebView(標簽帶有 target='_blank' 時,導致WKWebView無法加載點擊后的網(wǎng)頁的問題。)

- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures {

// 接口的作用是打開新窗口委托 WKFrameInfo *frameInfo = navigationAction.targetFrame;

if (![frameInfo isMainFrame]) {?

?[webView loadRequest:navigationAction.request];?

?}

returnnil;

}


就是解決 跳轉的時候 是 在 新窗口打開 鏈接 wkWebView 這邊 沒法跳轉 用這個方法 解決 跳轉問題?

2.2 ?9.0 系統(tǒng) 提供的 方法 ?當webView 關閉的時候 走的代理方法

- (void)webViewDidClose:(WKWebView*)webViewAPI_AVAILABLE(macosx(10.11), ios(9.0));

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_9_0

- (void)webViewDidClose:(WKWebView *)webView {NSLog(@"%s", __FUNCTION__);

}

#endif

2.3 ? 在JS端調用alert函數(shù)時,會觸發(fā)此代理方法。 ?三種 alert ?

可以 看下這個 鏈接 ?WKWebView JS調用alert??http://www.itdecent.cn/p/4717b48f6c59

- (void)webView:(WKWebView*)webView runJavaScriptAlertPanelWithMessage:(NSString*)message initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void(^)(void))completionHandler;

- (void)webView:(WKWebView*)webView runJavaScriptConfirmPanelWithMessage:(NSString*)message initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void(^)(BOOLresult))completionHandler;

?(void)webView:(WKWebView*)webView runJavaScriptTextInputPanelWithPrompt:(NSString*)prompt defaultText:(nullableNSString*)defaultText initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void(^)(NSString*_Nullableresult))completionHandler;

2.4確定給定元素是否應顯示預覽。

- (BOOL)webView:(WKWebView*)webView shouldPreviewElement:(WKPreviewElementInfo*)elementInfoAPI_AVAILABLE(ios(10.0));

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容