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。