在WKWebView中捕获并拨打电话号码

我有一个WKWebView,我想要求在select号码时拨打一个号码。 Web视图的内容包含HTML锚点标记“tel:”,我正在寻找一种方法来捕捉它。 哪个函数用于捕获这些标签?

设置webView的navigationDelegate属性并实现下面的代理函数( WKNavigationDelegate

 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) { if navigationAction.request.url?.scheme == "tel" { UIApplication.shared.openURL(navigationAction.request.url!) decisionHandler(.cancel) } decisionHandler(.allow) } 

从iOS10开始,您还可以在您的WKWebViewConfiguration上将dataDetectorTypes设置为.phoneNumber。 所有检测到的电话号码将被转换为包含电话号码周围的链接,因此当点击电话号码时,上述function将通过带有telscheme的URL被触发。

 configuration.dataDetectorTypes = .phoneNumber 
  • (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler;

修正了使用navigationAction委托方法在WKWebView中打电话的问题。

  func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if navigationAction.request.url?.scheme == "tel" { UIApplication.shared.openURL(navigationAction.request.url!) decisionHandler(.cancel) } else { decisionHandler(.allow) } } if #available(iOS 10.0, *) { webView.configuration.dataDetectorTypes = .phoneNumber }