2010-04-05 16 views

Respuesta

62

En delegado de su UIWebView, hacer:

- (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

En Swift 4 'web View func (_ web View: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Vacío) { si (request.url .scheme == "mailto"?) { UIApplication.shared.open (request.url) .... 'No –

33

he notado que cuando se ejecuta en el simulador de iPhone, pude hacer clic en un enlace HTTP en mi UIWebView y sería abrir en Safari, pero cuando hice clic en un enlace de mailto no pasaría nada. Pero cuando implementé la aplicación en un dispositivo real, funcionó. Supongo que la razón es porque no hay una aplicación de correo en el simulador, pero está Safari.

+3

aplicación de correo electrónico en el simulador de iOS. D'oh! Eso nunca pasó por mi mente. Gracias por terminar mi confusión y frustración. –

2

que querían tener en cuenta que esto probablemente no es la mejor solución.

UIWebView tiene una propiedad llamada dataDetectorTypes - establecer esto a todos o la dirección debe resolver su problema sin reemplazando el método mencionado anteriormente:

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

Pero tenga en cuenta que esto podría no funcionar en el simulador - Probé con el simulador de iPad 6.0 donde no funciona, aunque en un dispositivo iPad funciona como un encanto.

Cuestiones relacionadas