1.native调用js方法
//js方法
JS_editor.setBold = function() {
document.execCommand('bold', false, null);
this.enabledEditingItems();
}
//OC调用js方法
- (void)setBold {
NSString *JS = @"JS_editor.setBold();";
[self.webView stringByEvaluatingJavaScriptFromString:JS];
}
注:OC中的webView(UIWebView、WKWebView)均支持此方式调用
2.js调用native方法
//首先需要导入库
#import <JavaScriptCore/JavaScriptCore.h>
//首先OC需要声明一个method供JS调用,声明方法位置一般选择在webView的代理方法
- (void)webViewDidFinishLoad:(UIWebView *)webView {
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context[@"pushAlert"] = ^(){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"tip" message:@"Code execution success!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
};
}
//代码中声明了一个名叫“pushAlert”的不带参数的method,声明方式同定义block一样,可传递参数...
//接下来就是在JS代码中调用OC中声明的“pushAlert”方法.也可自行定义参数,需要注意的是方法名称必须一致.
JS_editor.setBold = function() {
document.execCommand('bold', false, null);
this.enabledEditingItems();
//setBlod()之后回调OC的方法
pushAlert();
}
注:OC中的webView(UIWebView、WKWebView)均支持此方式调用
详细见:https://www.cnblogs.com/zhou--fei/p/8895041.html