JS与OC交互

今日刚到一家公司, 老讨论什么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交互)