想用UIWebVeiw作的,可是忽然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版。本着对新事物的好奇,就上网查了一下,可是找了好多个都没说的多了详细,因而就问谷歌,找文档,看看使用方法,试用了一下,果真不错,记录下来,你们分享!javascript
导入Wbkit这个类库(WKWebVeiw包含在里面的)java
遵照协议(通常前两个就行啦,第三个主要是与JS相关的东西,这个协议中包含一个必须实现的方法,这个方法是提升App与web端交互的关键,它能够直接将接收到的JS脚本转为OC或Swift对象--网上大神说的,我没用过。)web
@interface ViewController : UIViewController<WKNavigationDelegate,WKUIDelegate,WKScriptMessageHandler>
3.建立个WebView的对象服务器
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]]; [self.view addSubview:webView];
这里有个注意点,网址必定要写完整,加上https://
我刚开始懒,没有加,屋里怎么试都加载不出来,显示个白屏!!血的教训啊!!ide
WKWebView代理有两个,是WKNavigationDelegate
和WKUIDelegate
,能够根据须要来决定用那些方法(固然使用以前不要忘了遵照协议)。性能
他们两个的代理方法有好多个,不过有的不经常使用就不写了,须要的本身点进去看一下就行啦。。。
spa
1. WKNavigationDelegate来追踪加载过程.net
// 页面开始加载时调用 - (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;
WKNavigtionDelegate来进行页面跳转代理
// 接收到服务器跳转请求以后再执行 - (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. WKUIDelegatecode
//1.建立一个新的WebVeiw - (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures; //2.WebVeiw关闭(9.0中的新方法) - (void)webViewDidClose:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0); //3.显示一个JS的Alert(与JS交互) - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler; //4.弹出一个输入框(与JS交互的) - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString * __nullable result))completionHandler; //5.显示一个确认框(JS的) - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler;
(PS:WKUIDelegate主要是作跟网页交互的,能够显示javascript的一些alert或者Action,看起来跟本身作的同样的.)
也能够参考这篇博客http://blog.csdn.net/baihuaxiu123/article/details/51674726