、在ViewController.h中 #import <UIKit/UIKit.h> #import "TGJSBridge.h" @interface BaseViewController : UIViewController<TGJSBridgeDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate,UIGestureRecognizerDelegate,UIWebViewDelegate> @property(nonatomic,strong)TGJSBridge *jsBridge; @property(nonatomic,strong)UILabel *btnLabel; @end 、在ViewController.m中 #import "BaseViewController.h" @interface BaseViewController () { UIWebView *webView; UIImagePickerController *picker; UIPopoverController *popPicture; } @end @implementation BaseViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; //UIWebView初始化 webView = [[UIWebView alloc] initWithFrame:CGRectMake(, , , )]; webView.layer.borderWidth = ; NSURL *url = [[NSBundle mainBundle] URLForResource:@"demo" withExtension:@"html"]; [webView loadRequest:[NSURLRequest requestWithURL:url]]; //TGJSBridge配置 self.jsBridge = [TGJSBridge jsBridgeWithDelegate:self]; webView.delegate = self.jsBridge; // [self.jsBridge postNotificationName:@"demo" userInfo:[NSDictionary dictionaryWithObjectsAndKeys:@"before load",@"message", nil] toWebView:webView]; //UILabel初始化 self.btnLabel = [[UILabel alloc] initWithFrame:CGRectMake(, , , )]; self.btnLabel.backgroundColor = [UIColor redColor]; self.btnLabel.text = @"我要变身" //UIImagePickerView初始化 picker = [[UIImagePickerController alloc] init]; picker.delegate = self; [webView reload]; [self.view addSubview:webView]; [self.view addSubview:self.btnLabel]; [self.view addSubview:webView]; } #pragma mark - TGJSBridgeDelegate -(void)jsBridge:(TGJSBridge *)bridge didReceivedNotificationName:(NSString *)name userInfo:(NSDictionary *)userInfo fromWebView:(UIWebView *)webview { NSLog(@"%@",name); picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.allowsEditing = YES; [self presentViewController:picker animated:YES completion:nil]; self.btnLabel.text = [userInfo objectForKey:@"message"]; } #pragma mark - UIImagePickerViewControllerDelegate -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSString *url =[info objectForKey:UIImagePickerControllerReferenceURL]; NSLog(@"%@",url); NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithCapacity:]; [dic setValue:@"" forKey:@"message"]; [self.jsBridge postNotificationName:@"demo" userInfo:dic toWebView:webView]; [self dismissViewControllerAnimated:YES completion:nil]; } @end 在demo.html中 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>JSBridge Test</title> <script src="./TGJSBridge.bundle/TGJSBridge.js"></script> <script src="jquery.min.js"></script> <body> <div style="margin-top:50px;"> <input type="button" name="" value="点我" id="ss" onclick="process()" /> <img src="1.jpg" id = "image"> </div> <script type="text/javascript"> function log(text){ alert(text); } var click_count = ; function process() { alert(); jsBridge.postNotification('oc',{message:'hello oc:'+click_count++}); } jsBridge.bind('demo', function(object){ log(object.message); // alert(1); }); </script> </body> </html>
附TGJSBridge git地址:https://github.com/ohsc/TGJSBridge