本文为博主原创,转载请注明出处:
http://blog.youkuaiyun.com/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依然可以发送出去。