美文网首页
iOS开发OC与JS交互

iOS开发OC与JS交互

作者: 上官小五 | 来源:发表于2017-03-08 10:04 被阅读0次

一、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的私信我发给你)

相关文章

网友评论

      本文标题:iOS开发OC与JS交互

      本文链接:https://www.haomeiwen.com/subject/yefbgttx.html