通常,当你想打开萨法尔链接我这样做 -
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://www.google.co.uk"]];
但因为你是在UIWebView
你不能做到这一点。
因此,你需要做的是实现shouldStartLoadWithRequest
代表UIWebView
。只要在UIWebView
中点击链接,就会调用该代理。现在你可以决定做你想做的。在这种情况下,你想在Safari中打开这个链接。因此,代码是这样的,以报价 -
-(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;
}
所以上面的代码打开每个http://, https://, and mailto://
URL外部Safari或邮件应用程序打开。
也有只能选择网址推出Safari浏览器,你可以从http改变他们的计划://到safari://
或类似的东西,只踢那些网址,关闭系统(带http://
更换自定义URL方案后)。
我在我的内部帮助文档中完成这项工作,该工具将HTML显示在UIWebView中,以便在应用程序中嵌入通用Web浏览器时不会遇到审阅过程中的问题。