iOS8 以后,苹果推出了一个新的加载网页显示的框架WebKit,它解决了在UIWebView上加载速度缓慢,占用内存大,优化困难等问题,在性能和稳定性上有了很大的提升,本文主要介绍WkWebView如何加载网页,并处理当html页面超链接里含有_blank时如何调用Safari浏览器打开该地址。
1.首先导入头文件
#import<WebKit/WebKit.h>
2.初始化及显示
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
@property (nonatomic, strong)WKWebView *webView;
_webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 20, kScreenWidth, kScreenHeight - 20)];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.163.com"]];
[self.webView loadRequest:request];
self.webView.navigationDelegate = self;//该代理可以用来追踪加载过程以及决定是否执行跳转。
self.webView.UIDelegate = self;
[self.view addSubview:self.webView];
3.理解 HTML <a>标签的target属性
_blank -- 在新窗口中打开链接
_parent -- 在父窗体中打开链接
_self -- 在当前窗体打开链接,此为默认值
_top -- 在当前窗体打开链接,并替换当前的整个窗体(框架页)
要想在新页面中打开超链接所指向的地址需要实现 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler 这个代理方法
//接收到响应后,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
//this URL externally. If we´re doing nothing here, WKWebView will also just do nothing. Maybe this will change in a later stage of the iOS 8 Beta
参数 WKNavigationAction 中有两个属性:sourceFrame和targetFrame,分别代表这个action的出处和目标,类型是 WKFrameInfo 。WKFrameInfo有一个 mainFrame 的属性,标记frame是在主frame里显示还是新开一个frame显示
原文链接:http://www.jianshu.com/p/3a75d7348843
WKFrameInfo *frameInfo = navigationAction.targetFrame;
BOOL isMainframe =[frameInfo isMainFrame];
NSLog(@"isMainframe :%d",isMainframe);
if (!isMainframe) {//打开新页面显示
NSURL *url = navigationAction.request.URL;
UIApplication *app = [UIApplication sharedApplication];
if ([app canOpenURL:url]) {
[app openURL:url];
}
}
decisionHandler(WKNavigationActionPolicyAllow);
}
本文参考链接
http://www.jianshu.com/p/3a75d7348843
http://www.brighttj.com/ios/ios-wkwebview-new-features-and-use.html
http://www.jianshu.com/p/3a75d7348843
网友评论