一、JS调用OC原生
1、引入库以及头文件
2、为方便操作,加载本地html
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
3、在test.html中添加一个按钮
给test.html的按钮添加一个打印的事件
function btnAction()
{
print('传入参数1','传入参数2');
}
4、在webViewDidFinishLoad方法中实现JS调用OC的方法
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
//定义一个上下文对象 JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//定义好JS要调用的方法, print就是调用的print方法名
context[@"print"] = ^() {
//在上下文对象中,取出要调用的JS方法
NSArray *args = [JSContext currentArguments];
//在主线程对UI操作
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"方式一"
message:@"这是JS调用OC原生的弹出窗" delegate:self
cancelButtonTitle:@"收到" otherButtonTitles:nil];
[alertView show];
});
for (JSValue *jsVal in args) {
NSLog(@"%@", jsVal.toString); //打印结果是:JS传入参数1 JS传入参数2
}
}
二、OC原生调用JS
1.在html中定义一个要被OC调用的JS方法
2.在webViewDidFinishLoad方法中实现OC调用JS的方法
[context evaluateScript:@"abc()"];
最后附上代码的两张图(想要demo的私信我发给你)
网友评论