Objective-C和Javascript的通信(三)
在IOS 7以后,我们可以使用苹果提供的JavaScriptCore框架进行Objective-C和Javascript的通信。(一)Objective-C调用Javascript
把之前的代码:
[webView stringByEvaluatingJavaScriptFromString:@"objectiveC_call_javaScript('调用Javascript');"];
换成下面这样:
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
[context evaluateScript:@"objectiveC_call_javaScript('调用Javascript')"];
运行。得到和之前一样的效果。
(二)Javascript调用Objective-C
IOS 7 以后,Javascript调用Objective-C和以前的方式差别相对比较大。你可以根据你的实际情况,在页面加载完成之前或者页面加载完成之后进行调用。
这里以点击按钮进行Objective-C的调用为例子。因为,一般要在页面加载完成之后才会点击按钮,所以,我们在网页加载完成之后给Javascript提交调用的入口。首先,我们修改点击按钮的响应事件如下:
<input type = "button" onclick = "openCamera()" value = "测试" name = "name"/>
然后在
-(void)webViewDidFinishLoad:(UIWebView *)webView
方法中添加以下代码:
context[@"openCamera"] = ^{
NSLog(@"打开照相机");
};
现在,你点击按钮,就会打印
打开照相机
调用成功。
如果你要在调用方法时传递参数也是很简单的。类似下面这样就可以了:
^(NSString *string ,JSValue *value){
NSLog(@"打开照相机");
};
评论