渣渣程序员

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(@"打开照相机");

};

 



评论

热度(1)