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

shr*_*tim 8 ios swift wkwebview

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

我发现了

  func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) 
Run Code Online (Sandbox Code Playgroud)

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

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

我的委托方法代码是

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

Sub*_*bbu 11

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

您甚至可以在加载请求之前检查您是否已连接到互联网; 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)
   }
}
Run Code Online (Sandbox Code Playgroud)