iOS 与 h5 交互快速方法

2018-07-30  本文已影响0人  sennnnn

在所需的交互视图.m文件中写如下类似的协议,在.m的@interface遵守这个协议名并且实现如下方法,


@protocol ZKKInteractionWithDelegate<JSExport>

-(void)toTheMinimum;

-(void)toTheMaximum;

-(void)closeWebView;

-(void)toAlert:(NSString*)msg;

@end

在.m文件implement中分别实现方法,文章中的几个方法分别是隐藏、展示、关闭WebView 和在WebView上进行弹框操作。具体什么时候该调用iOS的不用理会,这里只是为了h5可以控制我们的webView和弹框,所以逻辑是由h5实现。

- (void)toTheMaximum{

    //    self.webView.frame = CGRectMake(0, -22, pingmuwidth, pingmuheight+22);

    self.webView.hidden = NO;

    NSLog(@"toTheMaximum");

    dispatch_async(dispatch_get_main_queue(), ^{

        [self.chatView.textField resignFirstResponder];

    });

}

- (void)toTheMinimum{

    //    self.webView.frame = CGRectMake(0, 0, 1, 1);

    self.webView.hidden = YES;

    NSLog(@"toTheMaximum");

}

- (void)closeWebView{

    [self.webView removeFromSuperview];

    NSLog(@"closeWebView");

}

-(void)toAlert:(NSString*)msg{

    NSLog(@"toAlert:(NSString*)msg : %@",msg);

    UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"温馨提醒" message:msg delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

    [self.webView addSubview:alert];

    [alert show];

}


//实现UIWebViewDelegate,在.m文件中写如下方法识别js方法名,这个需要js和iOS的人达成一致类名,方法名,如

类名:InteractionWithJS
方法名:
ToTheMaximum
ToTheMinimum
closeWebView
toAlert(msg)

js调用webView的方法


-(void)webViewDidFinishLoad:(UIWebView *)webView{

    self.context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    self.context[@"InteractionWithJS"] = self;

    //JS调用无参数OC

    //    [self.view endEditing:YES];

    //    [self.chatView.textField resignFirstResponder];

    [self.context setExceptionHandler:^(JSContext *ctx, JSValue *value) {

        NSLog(@"--error:-- %@", value);

    }];



    //    self.context[@"InteractionWithJS"] = self.webView;

}
上一篇 下一篇

猜你喜欢

热点阅读