iOS开发OC与JS交互

一、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

}

}

iOS开发OC与JS交互_第1张图片

二、OC原生调用JS

1.在html中定义一个要被OC调用的JS方法

iOS开发OC与JS交互_第2张图片

2.在webViewDidFinishLoad方法中实现OC调用JS的方法

[context evaluateScript:@"abc()"];

iOS开发OC与JS交互_第3张图片

最后附上代码的两张图(想要demo的私信我发给你)

iOS开发OC与JS交互_第4张图片
iOS开发OC与JS交互_第5张图片

你可能感兴趣的:(iOS开发OC与JS交互)