Это определенно решаемо. Во-первых, давайте рассмотрим идею, что вы не можете запрограммировать кнопку с HTML. Если вы обслуживаете HTML в WKWebView, то вы можете захватывать ссылки, когда они появляются. Вот как это делается:
1) Создайте объект класса, соответствующий WKNavigationDelegate
2) В этом классе реализуйте func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
, который является функцией, предписанной делегатом.
3) Выполните следующим образом:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == WKNavigationType.linkActivated {
// Here you can examine properties of the link through the navigationAction object
let request = navigationAction.request
let urlString = request.url.absoluteURL.lowercased()
if urlString.hasPrefix("tel") {
//You can construct a url to then open
let phoneUrl = // construct here
UIApplication.shared.open(phoneUrl)
decisionHandler(WKNavigationActionPolicy.cancel)
return
} else if urlString.contains("mailto:") {
let mailUrl = // construct here
UIApplication.shared.open(mailUrl)
decisionHandler(WKNavigationActionPolicy.cancel)
return
}
}
print("not captured, continuing execution")
decisionHandler(WKNavigationActionPolicy.allow)
}
4) Вам необходимо установить делегата для вашего WKWebView:
yourWkWebView.navigationDelegate = theObjectThatConformsToTheDelegateInStep3
Заключительные мысли:
Если вы необходимо начать процесс создания электронной почты, вот несколько рекомендаций:
Open = message://
Start draft with recipient = mailto://TheirEmailAddress
Start draft with recipient, cc = mailto:TheirEmailAddress?cc=TheirEmailAddress
Start draft with recipient, bcc = mailto:TheirEmailAddress?bcc=TheirEmailAddress
Start draft with recipient, subject = mailto:TheirEmailAddress&subject=Your%20Subject%20Text
Start draft with recipient, body = mailto:TheirEmailAddress&body=Your%20Body%20Text
Start draft with recipient, CC, BCC, subject, body = mailto:TheirEmailAddress?cc=TheirEmailAddress?bcc=TheirEmailAddress&subject=Your%20Subject%20Text&body=Your%20Body%20Text
Если вам нужно открыть приложение для телефона, вы сможете пройти по самой ссылке. iOS ищет что-то, что начинается с tel://
или telprompt://
. Этот сайт хорошо работает в соответствии со схемами URL, которые использует Apple:
https://ios.gadgethacks.com/news/always-updated-list-ios-app-url-scheme-names-0184033/