Ios WKWebView-跟踪webview加载的进度

Ios WKWebView-跟踪webview加载的进度,ios,swift,xcode,wkwebview,Ios,Swift,Xcode,Wkwebview,我正在使用WKWebView加载HTML字符串使用webview.loadHTMLString()方法,如果没有internet连接,我想在webview加载失败时显示一条消息。我尝试了WKWebviewdidFail的委托方法,但当没有internet连接时,它不会进入该方法,而是进入didfish方法。因此,我无法区分成功案例和失败案例 编辑:-我正在加载一个HTMLString,其中包含一个websocket url您可以添加进度观察者,如下所示 override func viewDid

我正在使用
WKWebView
加载
HTML
字符串使用webview.loadHTMLString()方法,如果没有internet连接,我想在webview加载失败时显示一条消息。我尝试了
WKWebview
didFail的委托方法,但当没有internet连接时,它不会进入该方法,而是进入didfish方法。因此,我无法区分成功案例和失败案例


编辑:-我正在加载一个HTMLString,其中包含一个websocket url

您可以添加
进度
观察者,如下所示

override func viewDidLoad() {
    super.viewDidLoad()

    let configuration = WKWebViewConfiguration()
    self.webView = WKWebView(frame: self.view.bounds, configuration: configuration)
    self.webView.navigationDelegate = self
    webView.addObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress), options: .new, context: nil)
    self.view.addSubview(self.webView)

    self.webView.load(URLRequest(url: URL(string: "https://www.google.com/")!))
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "estimatedProgress" {
        print("Webview progress. \(Float(webView.estimatedProgress))")
    }
}
要获取internet连接错误并完成回调,可以实现
WKNavigationDelegate
didfail临时导航
didfish
方法

extension ViewController: WKNavigationDelegate {

    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
        print(error)
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("Webview loaded successfully!")
    }
}

当网络不可访问时,它不会进入DidFailTemperationalNavigation()或didFail()方法内部,而是进入didFinish()内部。我不是从url加载webview,而是加载一个具有websocket url的htmlString。