URL未在swift中的WKWebView中打开

URL未在swift中的WKWebView中打开,webview,wkwebview,swift5,wkwebviewconfiguration,Webview,Wkwebview,Swift5,Wkwebviewconfiguration,我需要在WKWebView中打开URL并登录门户。用户成功登录后,我必须从WKWebView执行下载操作,一切正常,但它在外部safari浏览器中打开,但根据要求,它应该在WKWebView中打开 @IBOutlet var webView: WKWebView! WKWebView的出口 @IBOutlet var webView: WKWebView! 用于在WKWebVIew中调用URL的函数 func loadURLInWebView() { let url = URL(

我需要在WKWebView中打开URL并登录门户。用户成功登录后,我必须从WKWebView执行下载操作,一切正常,但它在外部safari浏览器中打开,但根据要求,它应该在WKWebView中打开

@IBOutlet var webView: WKWebView!
WKWebView的出口

@IBOutlet var webView: WKWebView!
用于在WKWebVIew中调用URL的函数

   func loadURLInWebView() {
   let url = URL(string: "https://www-qa.yyy.com/content/dash/en/public/login.html")
   let urlRequest = URLRequest(url: url!)
   if let webView = webView {
       webView.load(urlRequest)
   }
}
为委托添加DecidePolicy后,它将在safari中打开url,但应在WKWebView中打开。我找不到问题所在

 public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    let url = navigationAction.request.url
    guard url != nil else {
        print(url!)
        decisionHandler(.allow)
        return
    }

    if url!.description.lowercased().starts(with: "http://") ||
        url!.description.lowercased().starts(with: "https://")  {
        decisionHandler(.cancel)
        UIApplication.shared.open(url!, options: [:], completionHandler: nil)
    } else {
        decisionHandler(.allow)
    }
}

你以错误的方式处理警卫声明。在guard else中,当URL为nil时将调用该条件。 如果您在其他位置打印(URL!),您的应用程序将崩溃。此外,当URL为nill时,应该调用cancel处理程序

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

    guard let url = navigationAction.request.url else { // else will be called when url is nil
       decisionHandler(.cancel)
       return
    }

    if url.description.lowercased().starts(with: "http://") ||
       url.description.lowercased().starts(with: "https://")  {
           decisionHandler(.allow)
    } else {
          decisionHandler(.cancel)
           UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}

感谢您的回复,但现在下载停止工作…您的下载URL是什么?