2010-04-05 75 views

回答

62

在你的UIWebView的委託,做:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if ([[[request URL] scheme] isEqual:@"mailto"]) { 
     [[UIApplication sharedApplication] openURL:[request URL]]; 
     return NO; 
    } 
    return YES; 
} 
+0

在夫特4 'FUNC web視圖(_ web視圖:WKWebView,decidePolicyFor navigationAction:WKNavigationAction,decisionHandler:@escaping(WKNavigationActionPolicy) - >空隙){ 如果(request.url。方案== 「電子郵件地址」?){ UIApplication.shared.open(request.url).... ' – 2018-02-20 22:58:00

33

我注意到,在iPhone模擬器上運行時,我可以在我的UIWebView中單擊HTTP鏈接,它會在Safari中打開,但是當我點擊一個mailto鏈接什麼都不會發生。但是當我將應用程序部署到一個真實的設備時,它工作。我期望的原因是因爲模擬器上沒有郵件應用程序,但有Safari。

+3

iOS模擬器上沒有電子郵件應用程序。 D'哦!這從來沒有超過我的想法。感謝您結束我的困惑和挫折。 – 2013-10-16 05:01:27

2

我想指出,這可能不是最好的解決方案。

UIWebView中確實有一個屬性叫做dataDetectorTypes - 將其設置爲全部或地址應該解決您的問題,而無需重寫上面提到的方法:

myWebView.dataDetectorTypes = UIDataDetectorTypeAll; //or UIDataDetectorTypeAddress etc.. 

但請注意,這可能不是在模擬器上工作 - 我試過它與iPad 6.0模擬器不兼容,雖然在iPad設備上它的工作就像一個魅力!