Как отключить всплывающее окно, когда пользователь нажимает номер телефона в WKWebView на iPad? - PullRequest
0 голосов
/ 17 мая 2018

Когда пользователь нажимает номер телефона в WKWebView, появляется всплывающее окно:

enter image description here

Как я могу перехватить такие касания и выполнить пользовательское действие?

На iPhone я могу перехватывать нажатия на телефонные номера методом WKNavigationDelegate:

public func webView(_ webView: WKWebView,
                    decidePolicyFor navigationAction: WKNavigationAction,
                    decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    //....
    decisionHandler(.allow)
}

однако на iPad всплывающее окно просто появляется и метод делегата не вызывается.

1 Ответ

0 голосов
/ 18 мая 2018

Я мог бы представить несколько подходов, хотя у меня нет возможности попробовать их прямо сейчас.

WKWebViewConfiguration

  • Установите свойства, такие как dataDetectorTypes в .none, хотя это должно быть по умолчанию, в любом случае.

  • Используйте setURLSchemeHandler(_:forURLScheme:), чтобы игнорировать схему tel://

HTML / JS

  • Удалите теги с ошибочными ссылками перед отображением HTML с помощью скребка
  • Примените некоторый Javascript, который ловит событие, и используйте preventDefault() или что-то еще.
...