1、JS调用OC
引入三个名词:
(1)JSContext:给JavaScript提供运行的上下文环境(2)JSValue:JavaScript和Objective-C数据和方法的桥梁
(3)JSExport:这是一个协议,如果采用协议的方法交互,自己定义的协议必须遵守此协议
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)
JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//test1就是js的方法名称,赋给是一个block 里面是iOS代码
context[@"text1"] = ^() {
NSMutableArray * args = [[JSContext currentArguments] mutableCopy];
JSValue *jsVal1 = args[0];
NSString * str1 = jsVal1.toString;
JSValue *jsVal2 = args[1];
int * num = jsVal2.toInt32;
}
2、OC调用JS
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//test1和test2均为js的方法名
//oc向js传递一个参数
NSString *jsFunctStr=@"test1('参数1')";
[context evaluateScript:jsFunctStr];
//oc向js传递二个参数
NSString *jsFunctStr1=@"test1('参数a','参数b')";
[context evaluateScript:jsFunctStr1];
}