题
是的areanything特别需要在html或回调在UIWebView处理锚标签与href,或是有什么特别的锚标签有的邮寄地址链接,在href?
解决方案
在您的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;
}
其他提示
我注意到,在iPhone模拟器上运行时,我可以点击我的UIWebView中的HTTP链接,它会在Safari中打开,但是当我点击了一个邮寄地址链接不会有事的。但是,当我部署的应用程序在真实设备,它的工作。我想到的原因是因为在模拟器上没有邮件应用程序,但Safari浏览器。
我要注意,这可能不是最好的解决办法。
UIWebView中确实有一个属性调用dataDetectorTypes - 将其设置为全部或地址应该解决您的问题,而无需重写方法上面提到的:
myWebView.dataDetectorTypes = UIDataDetectorTypeAll; //or UIDataDetectorTypeAddress etc..
但请注意,这可能不是工作在模拟器上 - !我与iPad 6.0模拟器,它不是在iPad设备它的工作就像一个魅力的工作,虽然尝试了
工作实例迅速4:3起案件的处理,扩大需要。
- 邮寄地址链路的工作
- 一些网址是点击,你想打开的Webview本身
打开所有其他网址移动safari
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let url = navigationAction.request.url { if (url.scheme == "mailto") { // mailto: link is clicked UIApplication.shared.open(url) decisionHandler(.cancel) return } if (url.absoluteString.contains("www.example.com/webviewURL")) { // Load this stuff in WebView decisionHandler(.allow) return } else { // open any other URL in mobile Safari UIApplication.shared.open(url) decisionHandler(.cancel) return } } decisionHandler(.cancel) return }
不隶属于 StackOverflow