通常,當你想打開薩法爾鏈接我這樣做 -
[[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瀏覽器時不會遇到審閱過程中的問題。