由于项目中使用到原生和H5交互的技术,其实这个也有很多的解决方法,最后选择使用一个叫WebViewJavascriptBridge的进行操作。在项目使用中遇到很多问题,在这把配置和使用问题一一罗列出来
步骤:
1》
#import "WebViewJavascriptBridge.h"
2》
@interface HomeVC ()<UIWebViewDelegate>
3》
@property (strong, nonatomic) WebViewJavascriptBridge *bridge;
4》
加载web view;并且设置代理
5》
加载WebViewJavascriptBridge,
#pragma mark 加载js
- (void)addJS {
self.bridge = [WebViewJavascriptBridge bridgeForWebView:self.webView webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {}];
// js调用oc
[self.bridge registerHandler:@"js_Call_Objc_Func" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"=====111111====%@", data);
if ([data[@"type"]intValue] == 2) {
#pragma mark 跳转到认证界面
Controllers *person = [[Controllers alloc]init];
person.share_id = self.share_id;
[self.navigationController pushViewController:person animated:YES];
} else if ([data[@"type"]intValue] == 1) {
LoginController *login = [[LoginController alloc]init];
UserDefaultsSave(kNoLogin, JRIsLogin);
[self.navigationController pushViewController:login animated:YES];
}
}];
// js调用oc
[self.bridge registerHandler:@"help_js_Call_Objc_Func" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"=====111111====%@", data);
// 点击跳转到对应的界面 然后点击返回按钮又回到这个页面
if ([data[@"type"]intValue] == 3 ) {
HomeHtml *homeHtml = [[HomeHtml alloc]init];
homeHtml.url = data[@"url"];
[self.navigationController pushViewController:homeHtml animated:YES];
}
}];
}
6》
添加web view的代理方法并且在代理方法里面进行一些操作。