WKWebView 适用于iOS8之后的系统
引用
#import <WebKit/WebKit.h>
1.OC调用JS
NSString *jsmethod = [NSString stringWithFormat:@"mymethd(\"%@\")",data]; //data(NSDate)为要传给js的数据
[self.wkWebView evaluateJavaScript:jsmethod completionHandler:^(id _Nullable result, NSError * _Nullable error) {
// result js返回值
}];
2.JS调用OC
(1)遵循代理
@interface SharecgiteViewController ()<WKNavigationDelegate,WKScriptMessageHandler>
(2)添加方法监听
WKWebViewConfiguration *webviewConfig = [[WKWebViewConfiguration alloc] init];
webviewConfig.userContentController = wkUController;
[webviewConfig.userContentController addScriptMessageHandler:self name:@"share"];
WKWebView *webView = [[WKWebView alloc ] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64) configuration:webviewConfig];
(3)代理方法实现
#pragma mark - WKScriptMessageHandler
- (void)userContentController:(WKUserContentController *)userContentController
didReceiveScriptMessage:(WKScriptMessage *)message {
if ([message.name isEqualToString: @"share"]) {
NSLog(@"%@",message.body);
}
}
(4)HTML中使用方法
window.webkit.messageHandlers.share.postMessage(message);
(5)释放js交互,在页面推出的时候,调用
WKUserContentController *controller = self.wkWebView.configuration.userContentController;
[controller removeScriptMessageHandlerForName:@"share"];