美文网首页
JS与OC交互

JS与OC交互

作者: yayun_he | 来源:发表于2017-03-09 10:53 被阅读0次

    今日刚到一家公司, 老讨论什么JS OC交互的事情,看demo里面用的好老,前端人员是根安卓约定的, 到我们这边一大团还要转换,反正看的我一脸懵逼, 就亲自弄了个html拿来与OC交互。
    OC调用JS挺方便的,直接加载出来web页

    NSString *pathStr = [[NSBundle mainBundle] pathForResource:@"jsoc" ofType:@"html"];
    UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.frame];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:pathStr]]];
    webView.delegate = self;
    [self.view addSubview:webView];
    

    OC调用JS,测试demo

     // oc调用js方法
    //    [self.jsContext evaluateScript: @"hide('oc掉jsalert方法')"];
        // oc掉js方法
        [webView stringByEvaluatingJavaScriptFromString:@"hide()"];
    

    JS调用OC,通过代理(使用代理时协议要遵循JSExport协议)和block两种。详情看demo在下方。

    self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
        /**
         *  此处将oc中得self传给js对象,jsContext的[@"show"],这个show任意定义,但是在js中用的时候必须用此一样的名字,来调用我们oc中协议的方法例如上面的hide123,在js中此例子是通过了button的点击方法出发这个协议中得 方法,
         */
        // js掉oc方法一 通过代理
        self.jsContext[@"show"] = self;
        // 方法二通过block
        __weak typeof(self) weakSelf = self;
        self.jsContext[@"hide"] = ^() {
            [weakSelf loggg];
        };
    

    废话不多说

    有问题忘大神指出~~ 谢谢🙏

    demo

    相关文章

      网友评论

          本文标题:JS与OC交互

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