有时我们用UIWebView显示html内容时,会出现html中有超链接的情况,这时我们如果想在用点击超链接时用调用iOS系统的Safari打开这些目标链接,而不是在UIWebView里面打开,我们可以用以下方法,在UIWebView 的委托中实现
[cpp]
view plain
copy
- #pragma mark - UIWebView Delegate
- - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
- {
- NSURL *requestURL =[[request URL] retain];
- if (([[requestURL scheme] isEqualToString: @"http"] || [[requestURL scheme] isEqualToString:@"https"] || [[requestURL scheme] isEqualToString: @"mailto" ])
- && (navigationType == UIWebViewNavigationTypeLinkClicked)) {
- return ![[UIApplication sharedApplication] openURL:[requestURL autorelease]];
- }
- [requestURL release];
- return YES;
- }
如果想在用户点击这些超链接时,不去响应这些链接(默认会在本UIwebView直接打开),可以在上面的委托返回NO,不过要在第一次加载完UIWebView后才返回NO,不然UIWebView加载不出内容,因为UIWebView每次连接都会进入此委托....