WKWebView详细介绍

OC与JS交互

加载方式一

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://w
ww.baidu.com"]]];
[self.view addSubview:webView];

加载方式二

// 初始化配置
WKWebViewConfiguration * configuration = [[WKWebViewConfiguration alloc] init];

// 通过配置来实例化WKWebView
webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:configu
ration];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://w
ww.baidu.com"]]];
[self.view addSubview:webView];

协议方法介绍

 #pragma mark - WKNavigationDelegate

// 页面开始加载时调用
 - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation*)navigation{

}

// 当内容开始返回时调用
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation{

}

// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{

}

// 页面加载失败时调用
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *
)navigation{

}

// 接收到服务器跳转请求之后调用
- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation{

}

// 收到响应后,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigat
ionResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{

    NSLog(@"%@",navigationResponse.response.URL.absoluteString); 
    
    // 允许跳转
    decisionHandler(WKNavigationResponsePolicyAllow);
    
    // 不允许跳转
    // decisionHandler(WKNavigationResponsePolicyCancel);
}

// 在发送请求前,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{

    NSLog(@"%@",navigationAction.request.URL.absoluteString); 
    // 允许跳转
    decisionHandler(WKNavigationActionPolicyAllow); 
    
    // 不允许跳转
    // decisionHandler(WKNavigationActionPolicyCancel);
}
#pragma mark - WKUIDelegate

// 创建一个新的WebView
 - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWeb
ViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures{

    return [[WKWebView alloc]init];
}

// 输入框
- (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString * __nullable result))completionHandler{

    completionHandler(@"http");
}

// 确认框
- (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler{ 
    
    completionHandler(YES);
}

// 警告框
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler{
    
    NSLog(@"%@",message);
    completionHandler();
 }

你可能感兴趣的:(WKWebView详细介绍)