临摹微笑
先看一下Web中,我们给h1标签添加一个onclick事件,让它在被点击之后,修改当前的url。Web中的HTML代码:<html><head><script> function getInfo(name){ window.location = "/getInfo/"+name;} </script> </head> <body> <h1 onclick="getInfo('why')">Name</h1></body> </html> iOS中,先拖拽WebView,访问localhost,然后通过WebView的委托事件监听url跳转操作,并且把跳转截取下来。也就是说,在onclick的时候,普通浏览器灰跳转到那个url,但是在iOS的这个WebView里面,这个跳转会被拦截,用这种方式可以巧妙地实现JS调用iOS的原生代码: //// DWViewController.m// DareWayApp//// Created by why on 14-6-3.// Copyright (c) 2014年 DareWay. All rights reserved.// #import "DWViewController.h" @interface DWViewController () @property (weak, nonatomic) IBOutlet UIWebView *myWebview; // 主页面 @end @implementation DWViewController - (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 适配iOS6的状态栏 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { _myWebview.frame = CGRectMake(0,20,self.view.frame.size.width,self.view.frame.size.height-20); } // 加载制定的URL NSURL *url =[NSURL URLWithString:@"http://localhost"]; NSURLRequest *request =[NSURLRequest requestWithURL:url]; [_myWebview setDelegate:self]; [_myWebview loadRequest:request]; } // 网页中的每一个请求都会被触发-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ // 每次跳转时候判断URL if([request.mainDocumentURL.relativePath isEqualToString:@"/getInfo/why"]) { NSLog(@"why"); return NO; } return YES;} - (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}