WebKit库之——WKWebView篇

来源:互联网 发布:灭茶苦茶 知乎 编辑:程序博客网 时间:2024/04/29 22:40
webkit使用WKWebView来代替IOS的UIWebView和OSX的WebView,并且使用Nitro JavaScript引擎,这意味着所有第三方浏览器运行JavaScript将会跟safari一样快。
第一、WKWebView增加的属性和方法
类比UIWebView,跟UIWebView的API对比,
增加的属性:
1、estimatedProgress 加载进度条,在IOS8之前我们是通过一个假的进度条来实现
2、backForwardList 表示historyList
3、WKWebViewConfiguration *configuration; 初始化webview的配置
增加的方法:
1、- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration 
初始化
3、(WKNavigation *)goToBackForwardListItem:(WKBackForwardListItem *)item; 
跳到历史的某个页面
第二、相同的属性和方法
goBack、goForward、canGoBack、canGoForward、stopLoading、loadRequest、scrollView
第三、被删去的属性和方法:
1、- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
在跟js交互时,我们使用这个API,目前WKWebView完档没有给出实现类似功能的API
2、无法设置缓存
在UIWebView,使用NSURLCache缓存,通过setSharedURLCache可以设置成我们自己的缓存,但WKWebView不支持NSURLCache
第四、delegate方法的不同
UIWebView支持的代理是UIWebViewDelegate,WKWebView支持的代理是WKNavigationDelegate和WKUIDelegate
WKNavigationDelegate主要实现了涉及到导航跳转方面的回调方法
WKUIDelegate主要实现了涉及到界面显示的回调方法:如WKWebView的改变和js相关内容
具体来说WKNavigationDelegate除了有开始加载、加载成功、加载失败的API外,还具有额外的三个代理方法:
1、- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation
这个代理是服务器redirect时调用
2、- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler
这个代理方法表示当客户端收到服务器的响应头,根据response相关信息,可以决定这次跳转是否可以继续进行。
3.- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

根据webView、navigationAction相关信息决定这次跳转是否可以继续进行,这些信息包含HTTP发送请求,如头部包含User-Agent,Accept



首先添加Webkit框架

导入#import <WebKit/WebKit.h>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#import <WebKit/WebKit.h>
 
@interface WebBrowerViewController ()<WKNavigationDelegate>
 
@property(nonatomic,strong) WKWebView *webView;
 
@end
 
@implementation WebBrowerViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
     
    [self.view addSubview:self.webView];
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
}
 
 
-(WKWebView *)webView
{
    if (!_webView) {
        _webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
        _webView.navigationDelegate = self;
    }
    return _webView;
}
 
 
//1.1.1 页面开始加载时调用
-(void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation
{
    NSLog(@"页面开始加载...");
}
 
//1.1.2 当内容开始返回时调用
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation
{
    NSLog(@"内容开始返回...");
}
 
//1.1.3 页面加载完成之后调用
-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
    NSLog(@"页面加载完成...");
}
 
//1.1.4 页面加载失败时调用
-(void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error
{
    NSLog(@"页面加载失败...");
}
 
@end

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 lv羊绒围巾起球怎么办 羊绒洗缩水了怎么办啊 lv围巾洗坏了怎么办 针织衫越穿越大怎么办 右边上嘴唇肿了怎么办 毛衣洗了掉毛怎么办 身上被螨虫咬了怎么办 裤子上有蜡烛油怎么办 蜡烛滴在地板上怎么办 我用面膜过敏了怎么办 敷面膜过敏肿了怎么办 贴面膜脸过敏了怎么办 隐形船袜总是掉怎么办 车钥匙没电了怎么办 水坐垫干了结晶怎么办 冰垫里面有颗粒怎么办 车上的脚垫丢了怎么办 朔钢窗锁不好使怎么办 8个月孕妇咳嗽怎么办 孕妇7个月咳嗽怎么办 孕妇6个月喉咙痒怎么办 怀孕了咳嗽的厉害怎么办 买衣服眼光太差怎么办 我买衣服没主见怎么办 海澜之家皮带长怎么办 针织衫袖口松了怎么办 宝宝裤子腰大了怎么办 两岁了头发稀少怎么办 孩子抵抗力差爱生病怎么办 三岁宝宝总生病怎么办 冬天穿伴娘服冷怎么办 白衬衣粘了黑毛怎么办 黄衣服钻进黑毛怎么办 单位没给上社保怎么办 轮毂中心孔大了怎么办 钻戒大了怎么办小窍门 shift加f4没反应怎么办 多洗联系不上怎么办 弹力靴筒往下掉怎么办 子宫内膜厚月经停不了怎么办 雪纺衣服有静电怎么办