本文为博主原创,转载请注明出处:http://blog.csdn.net/xiemotongye/article/details/9247177
UIWebView也许你常用的一个控件,它相当于一个内置的safari浏览器,用它浏览网页非常方便好用。
但是我们毕竟是开发app的,单纯的网页浏览也许无法满足我们的需求。也许你会遇到这样的需求:点击网页中的某个链接,但是此时WebView并不需要跳转到那个链接所指向的URL,而是想让app内部做一些有趣的事情,这个想法可以实现吗?
答案是肯定的,为了截获UIWebView中的Request,我们的controller首先要继承UIWebViewDelegate协议。然后实现协议中的方法:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *urlStr = [request.URL absoluteString]; // here is your request URL NSString *theURL = @"http://xxxxx"; if ([urlStr isEqualToString:theURL]) { // do something interesting here. return NO; } return YES; }
如果请求地址和你设定的theURL相同,则做些有趣的事情,这时的“return NO;”表示UIWebView将直接截获request,不会发生页面跳转。如果改成“return YES;”则不但可以做些有趣的事情,而且request依然可以发送出去。