1、基础使用
1.首先导入头文件
#import <Webkit/webkit.h>
2.正常创建WKWebView
WKWebView *webview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:webview];
3.加载网页
- 加载网址
//由于IOS9的安全机制更高,苹果不再允许http连接和没有ssl验证的https运行。
//需在Info.plist文件添加如下代码
//App Transport Security Settings
//Allow Arbitrary Loads 设置为YES
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.cnblogs.com/mddblog/"]];
[webview loadRequest:request];
- 加载本地HTML页面
NSURL *url = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webview loadRequest:request];
- 加载本地可被被WebKit加载的文件
NSURL *url = [NSURL fileURLWithPath:@"/Users/userName/Desktop/bigIcon.png"];
[webview loadFileURL:url allowingReadAccessToURL:url];
2、WKWebView
跳转与刷新网页的一些常用方法
- 返回上一页面可以用
[webview goBack]
- 跳转下一页面可以用
[webview goForward]
- 刷新页面可以用
[webview reload]
或[webview reloadFromOrigin]
(reloadFromOrigin会比较网络数据是否有变化,没有变化则使用缓存,否则从新请求。
) - 跳转到某个指定历史页面可以用
[webview goToBackForwardListItem:webview.backForwardList.backList[0]]
(backForwardList是webview的向前向后列表)
3、WKNavigationDelegate
协议
WKNavigationDelegate协议分为两部分,第一部分是页面跳转的监听,第二部分是页面加载的监听。
3.1页面跳转的监听
//身份验证
- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{
completionHandler(NSURLSessionAuthChallengeUseCredential,nil);
}
// 1 在发送请求之前,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
decisionHandler(WKNavigationActionPolicyAllow);
}
// 3 在收到服务器的响应头,根据response相关信息,决定是否跳转。decisionHandler必须调用,来决定是否跳转,参数WKNavigationActionPolicyCancel取消跳转,WKNavigationActionPolicyAllow允许跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler
{
decisionHandler(WKNavigationResponsePolicyAllow);
}
//4 接收到服务器跳转请求之后调用 (服务器端redirect),不一定调用
- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation
{
}
//导航错误
- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error
{
}
//WKWebView终止
- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView
{
}
3.2页面加载的监听
// 2 页面开始加载
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation
{
}
// 4 开始获取到网页内容时返回
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation
{
}
// 5 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
}
// 页面加载失败时调用
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation
{
}
网友评论