首页 > 解决方案 > WKWebView 在 Safari 中打开链接

问题描述

我正在使用 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) -> Void) {
      if navigationAction.navigationType == .linkActivated  {
          decisionHandler(.cancel)
          guard let url = navigationAction.request.url else {
              decisionHandler(.allow)
              return
          }
          UIApplication.shared.open(url)
          decisionHandler(.cancel)
        }
    }
}

标签: wkwebview

解决方案


推荐阅读