WKWebView API精讲(OC)

来源:互联网 发布:freebsd 源码 编辑:程序博客网 时间:2024/06/05 08:53

转载于:http://blog.csdn.net/hdfqq188816190/article/details/52067798

WKWebView

看看WKWebView的头文件声明:

WKWebViewConfiguration配置

WKPreferences偏好设置

目前在iOS平台上偏好设置只有三个属性可以设置,如下:

WKProcessPool内容处理池

WKProcessPool并没有公开任何的属性或者方法,不需要配置:

config.processPool=[[WKProcessPoolalloc] init];

其实我们也没有必须去创建它。

WKUserContentController内容交互控制器

我们要通过JS与webview内容交互,就需要到这个类了,它的所有属性及方法说明如下:

WKUserScript

在WKUserContentController中,所有使用到WKUserScript。WKUserContentController是用于与JS交互的类,而所注入的JS是WKUserScript对象。它的所有属性和方法如下:

WKUserScriptInjectionTime 

它是一个枚举类型,只有在文档开始加载时注入和加载结束时注入。

WKWebsiteDataStore存储的Web内容

iOS9.0以后才能使用这个类。它是代表webview不同的数据类型,包括cookies、disk、memory caches、WebSQL、IndexedDB数据库和本地存储。

从这里看,要优化Webview好像可以通过它来实现,不过要求iOS9.0以上才能使用。现在6.0都没有抛弃的我,从来不能考虑这种最新的。

所有的dataTypes是下面这些系统所定义的:

WKWebsiteDataRecord

iOS9.0以后才可用。

website的数据存储记录类型,它只有两个属性:

WKSelectionGranularity选择粒度

它表示在webview上选择内容的粒度,只有下面这两种类型:

它是用于webview内容交互时选择内容的粒度类型设置。比如说,当使用WKSelectionGranularityDynamic时,而所选择的内容是单个块,这时候granularity可能会是单个字符;当所选择的web内容不限制于某个块时,granularity可能会是单个块。

 

WKNavigationDelegate

[objc] view plain copy
  1. @protocol WKNavigationDelegate<NSObject>  
  2.   
  3. @optional  
  4. 1.导航监听  
  5.   
  6. #pragma mark - WKNavigationDelegate 页面跳转  
  7. #pragma mark 在发送请求之前,决定是否跳转  
  8. - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;  
  9.   
  10. #pragma mark 身份验证  
  11. - (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *__nullable credential))completionHandler;  
  12.   
  13. #pragma mark 在收到响应后,决定是否跳转  
  14. - (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler;  
  15.   
  16. #pragma mark 接收到服务器跳转请求之后调用  
  17. - (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(null_unspecified WKNavigation *)navigation;  
  18.   
  19. #pragma mark WKNavigation导航错误  
  20. - (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error;  
  21.   
  22. #pragma mark WKWebView终止  
  23. - (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView;  
  24.   
  25. 2.页面监听  
  26.   
  27. #pragma mark - WKNavigationDelegate 页面加载  
  28. #pragma mark 页面开始加载时调用  
  29. - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation;  
  30.   
  31. #pragma mark 当内容开始返回时调用  
  32. - (void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified WKNavigation *)navigation;  
  33.   
  34. #pragma mark 页面加载完成之后调用  
  35. - (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation;  
  36.   
  37. #pragma mark 页面加载失败时调用  
  38. - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error;  
  39.   
  40. @end  


WKNavigationActionPolicy

导航动作决定策略:

它是枚举类型,只有Cancel和Allow这两种。设置为Cancel就是不允许导航,就不会跳转链接。

WKNavigationResponsePolicy

WKNavigationResponse

WKNavigationResponse是导航响应类,通过它可以获取相关响应的信息:

只有接收响应与不接收响应两种。

WKNavigationAction

WKNavigationAction对象包含关于导航的action的信息,用于make policy decisions。它只有以下几个属性:

WKNavigationType

WKNavigationType类型是枚举类型,它的可选值如下:

WKUIDelegate

WKBackForwardList

WKBackForwardList表示webview中可以前进或者后退的页面列表。其声明如下:

WKBackForwardListItem

页面导航前进、后退列表项: 

最后

本篇文章只是讲解了WKWebView所有相关的类的API,先阅读过本篇文章,再继续往下阅读实战篇文章!