UIWebView之JS与OC交互(三)

前言

基于UIWebView的JS与OC交互(一)之JSExport
基于UIWebView的JS与OC交互(二)之拦截URL
基于UIWebView的JS与OC交互(三)之Block
基于WKWebView的JS与OC交互
本篇文章继续介绍JS与OC交互,使用方式Block方式。
Demo


正文

注意事项:
1、需要移动端与H5商定调用id;
2、需要移动端与H5商定id调用的方法名称;
3、主要规避block中的内存泄漏问题;
4、此方法适用于UIWebView。

代码如下:
在ViewController.m文件中

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [self blockMethod];
}
//方法三:js调用oc本地方法,Block方式
- (void)blockMethod
{
    __weak ViewController *vc = self;
    JSContext *context=[webPageView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    /**注意循环引用问题*/
    //调用id:test
    context[@"test"] = ^(id str)
    {
        NSArray *values = [JSContext currentArguments];
        for (JSValue *value in values)
        {
            //本地方法名称:showAlert1
            if ([[value toString] isEqualToString:@"showAlert1"])
            {
                [vc showAlert1];
            }
        }
    };
}
- (void)showAlert1
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"Block之JS调用本地方法" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
    [alert show];
}

HTML文件写法如下:

UIWebView之JS与OC交互(三)_第1张图片
image.png

iOS技术交流群:681732945

你可能感兴趣的:(UIWebView之JS与OC交互(三))