一.引言
UIWebView是在iOS2時(shí)發(fā)布的,WKWebView是在Apple的WWDC 2014隨iOS 8和OS X 10.10發(fā)布的,WKWebView將逐步取代笨重的UIWebView惠桃,加載速度更快塞祈,占用內(nèi)存少,優(yōu)化簡(jiǎn)單循签。
二.WKWebView新特性
1.在性能级乐、穩(wěn)定性、功能方面有很大提升(最直觀的體現(xiàn)就是加載網(wǎng)頁(yè)是占用的內(nèi)存)县匠;
2.允許JavaScript的Nitro庫(kù)加載并使用(UIWebView中限制)风科;
3.支持了更多的HTML5特性;
4.高達(dá)60fps的滾動(dòng)刷新率以及內(nèi)置手勢(shì)乞旦;
5.提供常用的屬性贼穆,如加載網(wǎng)頁(yè)進(jìn)度的屬性estimatedProgres
6.將UIWebViewDelegate與UIWebView重構(gòu)成了14類與3個(gè)協(xié)議查看蘋果官方文檔;
三.WKWebView的使用
導(dǎo)入Wbkit這個(gè)類庫(kù)
引用#import <WebKit/WebKit.h>
//初始化
WKWebView*webView = [[WKWebViewalloc] initWithFrame:self.view.bounds];
[self.view addSubview:webView];
//加載網(wǎng)頁(yè)
[webView loadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:@"https://www.baidu.com"]]];
WKWebView有兩個(gè)委托
WKNavigationDelegate
//頁(yè)面開始加載時(shí)調(diào)用
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
//當(dāng)內(nèi)容開始返回時(shí)調(diào)用
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
//頁(yè)面加載完成之后調(diào)用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;
//頁(yè)面加載失敗時(shí)調(diào)用
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation;
//接收到服務(wù)器跳轉(zhuǎn)請(qǐng)求之后再執(zhí)行
- (void)webView:(WKWebView*)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation*)navigation;
//在收到響應(yīng)后兰粉,決定是否跳轉(zhuǎn)
- (void)webView:(WKWebView*)webView decidePolicyForNavigationResponse:(WKNavigationResponse*)navigationResponse decisionHandler:(void(^)(WKNavigationResponsePolicy))decisionHandler;
//在發(fā)送請(qǐng)求之前故痊,決定是否跳轉(zhuǎn)
- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler;
WKUIDelegate;
//創(chuàng)建一個(gè)新的WebVeiw
- (nullableWKWebView*)webView:(WKWebView*)webView createWebViewWithConfiguration:(WKWebViewConfiguration*)configuration forNavigationAction:(WKNavigationAction*)navigationAction windowFeatures:(WKWindowFeatures*)windowFeatures;
//WebVeiw關(guān)閉(9.0中的方法)
- (void)webViewDidClose:(WKWebView*)webViewNS_AVAILABLE(10_11,9_0);
//顯示一個(gè)JS的Alert(與JS交互)
- (void)webView:(WKWebView*)webView runJavaScriptAlertPanelWithMessage:(NSString*)message initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void(^)(void))completionHandler;
//彈出一個(gè)輸入框(與JS交互的)
- (void)webView:(WKWebView*)webView runJavaScriptTextInputPanelWithPrompt:(NSString*)prompt defaultText:(nullableNSString*)defaultText initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void(^)(NSString* __nullableresult))completionHandler;
//顯示一個(gè)確認(rèn)框(JS的)
- (void)webView:(WKWebView*)webView runJavaScriptConfirmPanelWithMessage:(NSString*)message initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void(^)(BOOLresult))completionHandler;