WKWebView открывает ссылки в Safari

#wkwebview

Вопрос:

Я использую WKWebView для отображения страниц справки в своем приложении. У меня есть несколько ссылок, которые чаще всего открываются в Safari при нажатии. Но все они открываются в моем приложении (внутри WKWebView).

Это то, что у меня есть:

 import WebKit  class FAQAnswerViewController: UIViewController, WKUIDelegate {   @IBOutlet weak var webView: WKWebView!  var answer = ""  var style = "style.css"    override func viewDidLoad() {  super.viewDidLoad()    webView.uiDelegate = self  webView.backgroundColor = UIColor.mainColorInverse  webView.scrollView.backgroundColor = UIColor.mainColorInverse  webView.isOpaque = false  webView.scrollView.bounces = false  }   override func viewWillLayoutSubviews() {  if #available(iOS 13, *) {  let mode = traitCollection.userInterfaceStyle  if mode == .dark {  style = "style-dark.css"  }  }  answer = String(format: answer, style)  let path = Bundle.main.bundlePath  let url = URL(fileURLWithPath: path)  webView.loadHTMLString(answer, baseURL: url   }   func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -gt; Void) {  if navigationAction.navigationType == .linkActivated {  decisionHandler(.cancel)  guard let url = navigationAction.request.url else {  decisionHandler(.allow)  return  }  UIApplication.shared.open(url)  decisionHandler(.cancel)  }  } }  

Комментарии:

1. Я думаю, что дополнительное decisionHandler(.cancel) перед guard этим не нужно и может привести к неправильному поведению. Также я думаю, что вам нужно установить webView.navigationDelegate = self .