网址未在WKWebView中快速打开

时间:2019-12-30 07:56:29

标签: webview wkwebview swift5 wkwebviewconfiguration

我需要在 WKWebView 中打开URL并登录到门户。用户成功登录后,我必须从WKWebView执行下载操作,一切正常,但可以在外部野生动物园浏览器中打开,但根据要求,应在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)
   }
}

在添加了definePolicyFor委托之后,它在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)
    }
}

1 个答案:

答案 0 :(得分:0)

您使用错误的方式处理保护声明。否则,URL为零时将调用该条件。 如果您在其他位置打印(URL!),则您的应用将崩溃。此外,当URL为零时,您应该调用cancel Handler。

head == nullptr