美文网首页
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