2010-04-05 48 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设备上它的工作就像一个魅力!