WKWebView的使用以及交互传值
2018-11-22 本文已影响0人
顺其自然_Cao
1,导入
#import <WebKit/WebKit.h>
2,实现代理
<WKUIDelegate,WKNavigationDelegate,WKScriptMessageHandler>
3,
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc]init];
config.preferences = [[WKPreferences alloc]init];
// config.preferences.minimumFontSize = 10;
config.preferences.javaScriptEnabled = YES;
config.preferences.javaScriptCanOpenWindowsAutomatically = YES;
config.userContentController = [[WKUserContentController alloc]init];
config.processPool = [[WKProcessPool alloc]init];
_wkweb1 = [[WKWebView alloc]initWithFrame:CGRectMake(0, NavHeight, SCREEN_WIDTH, 250) configuration:config];
_wkweb1.UIDelegate = self;
_wkweb1.navigationDelegate = self;
[self.view addSubview:_wkweb1];
NSString *path = [[NSBundle mainBundle] pathForResource:@"home.html" ofType:nil];
[_wkweb1 loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];
//注册JS协议方法,也就是OC通知JS给这个名字叫GetNo传值操作
[config.userContentController addScriptMessageHandler:self name:@"GetNo"];
4,实现代理方法
#pragma mark - WKNavigationDelegate
// 页面开始加载时调用
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
}
// 当内容开始返回时调用
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation{
}
// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
if (webView == self.wkweb1) {
NSString *str = [self GetJSONStr];
NSString * jsStr=[NSString stringWithFormat:@"myFun('%@')",str];
NSLog(@"jsStr==%@",jsStr);
[self.wkweb1 evaluateJavaScript:jsStr completionHandler:^(id _Nullable result, NSError * _Nullable error) {
// NSLog(@"HOme:%@==Home:%@",result,error);
}];
}
}
#pragma mark - WKScriptMessageHandler
- (void)userContentController:(WKUserContentController *)userContentController
didReceiveScriptMessage:(WKScriptMessage *)message {
NSLog(@"message.name=%@==message.body=%@",message.name,message.body);
if ([message.name isEqualToString:@"GetNo"]) {
NSLog(@"message.name=%@==message.body=%@",message.name,message.body);
[self AFNworing2:message.body];
}
}
5.JS代码
image.png
6.特别要注意的事。一定要切记。文件拿齐全。 image.png