是的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起案件的处理,扩大需要。

  1. 邮寄地址链路的工作
  2. 一些网址是点击,你想打开的Webview本身
  3. 打开所有其他网址移动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
    }
    
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top