WebKit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebKit相关的知识,希望对你有一定的参考价值。

1.WKWebView新特性


 

  • 在性能、稳定性、功能方面有很大提升、最直观的体现就是加载网页是占用的内存、模拟器加载百度与开源中国网站时、WKWebView占用23M--而UIWebView占用85M。
  • 支持了更多的html5特性。
  • 高达60fps的滚动刷新率以及内置手势。
  • 将UIWebViewDelegate与UIWebView重构成了14类与3个协议。

2.WKWebView初始化


 

  • 2.1. 首先需要引入WebKit库

#import <webkit/webkit.h>

  • 2.2. 初始化方法分为以下两种

// 默认初始化

- (instancetype)initWithFrame:(CGRect)frame;

// 根据对webview的相关配置 进行初始化

- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration;

  • 2.3. 加载网页与HTML代码的方式与UIWebView相同 代码如下:

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];

[webView loadRequest:[NSURLRequestrequestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]];

[self.view addSubview:webView];

3.WKWebView的代理方法


 

  • 1. 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:(WKNavigationResponse *)navigationResponse decisionHandler:(void(^)(WKNavigationResponsePolicy))decisionHandler;

// 在发送请求之前,决定是否跳转

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

  • 2. WKUIDelegate

// 创建一个新的WebView

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

     剩下三个代理方法全都是与界面弹出提示框相关的 针对于web界面的三种提示框:警告框、确认框、输入框 分别对应三种代理方法。

     警告框的例子:

/**

*  web界面中有弹出警告框时调用

*

*  @param webView          实现该代理的webview

*  @param message          警告框中的内容

*  @param frame              主窗口

*  @param completionHandler 警告框消失调用

*/

- (void)webView:(WKWebView *)webView runjavascriptAlertPanelWithMessage:(NSString*)message initiatedByFrame:(void(^)())completionHandler;

 

以上是关于WebKit的主要内容,如果未能解决你的问题,请参考以下文章