首页 文章

WKWebView loadRequest失败时加载自定义错误htmlString

提问于
浏览
5

在我的控制器中,我调用了WKWebViewInstance.loadRequest(url) . 如果没有可用的Internet,我想在WKWebView中加载错误消息 .

我发现了

func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError)

当WKWEbView导航失败而没有互联网连接时被调用 . 当我在上面的委托方法中进行webView.loadHtmlString()调用时,没有任何反应 .

如何在发出WKWEbView导航请求时检测到网络连接不存在,并将固定错误消息加载到Web视图中?

我的委托方法代码是

func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
    webView.stopLoading()
    webView.loadHTMLString(Constants.OfflineHtmlString!,baseURL:  nil)
}

2 回答

  • 7

    如果需要在未连接到互联网时向用户显示错误信息,

    您甚至可以在加载请求之前检查您是否已连接到互联网; Reachability 是一种流行的api,通常有助于检查这一点 . 这里似乎有一个快速的港口https://github.com/ashleymills/Reachability.swift

    我建议采用上述方案;如果您仍希望允许它失败然后显示错误,请确保 OfflineHtmlString 的正确性并在加载 OfflineHtmlString 之前验证错误代码;

    我不知道你的html字符串是否有效;如果它有效,我会做类似下面的事情;

    func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
       if(error.code == NSURLErrorNotConnectedToInternet){
           webView.loadHTMLString(Constants.OfflineHtmlString!,baseURL:  nil)
       }
    }
    
  • 0

    Subbu对于swift4来说是正确的

    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
        print("loading error", error)
        if(error._code == NSURLErrorNotConnectedToInternet){
            loadingLabel.text = "Hit Cancel to return back"
        }
        errorDisplay(error: "Loading error. Please try again later.\(error)")
        spinner.stopAnimating()
        loadingLabel.text = "Hit Cancel to return back"
    }
    

相关问题