ios - WKWebView canGoForward 总是返回 false swift 5

标签 ios swift webview wkwebview swift5

我已经实现了 WKWebView 一切都很完美。 canGoBack 值已更改,但 canGoForward 始终返回 false。如果我完全启用强制,那么它可以工作,但是当有任何转发 url 时,我想启用转发按钮。

WKWebView 不包含 webViewDidStartLoadwebViewDidFinishLoad 委托(delegate)方法,因此我使用 didFinish 方法。它适用于后退按钮,但前进按钮不起作用!我已经检查了 StackOverFlow 没有找到 WKWebview 的解决方案。

下面是我的代码:

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void){
        buttonConfiguration(webView: webView)
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        buttonConfiguration(webView: webView)
}

func buttonConfiguration(webView: WKWebView){
        print("Back", webView.canGoBack)
        print("Forward", webView.canGoForward)
        backButton.isEnabled = webView.canGoBack
        forwardButton.isEnabled = webView.canGoForward
}

仅提及代码与此问题相关 谢谢!

最佳答案

您可以使用 KVO 观察 canGoBackcanGoForward 的变化:

添加观察者:

  self.webView.addObserver(self, forKeyPath: #keyPath(WKWebView.canGoBack), options: .new, context: nil)
        self.webView.addObserver(self, forKeyPath: #keyPath(WKWebView.canGoForward), options: .new, context: nil)

KVO 观察变化(此处放置启用/禁用按钮逻辑):

 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if let _ = object as? WKWebView {
            if keyPath == #keyPath(WKWebView.canGoBack) {
                print("canGoBack: \(self.webView.canGoBack)")
            } else if keyPath == #keyPath(WKWebView.canGoForward) {
                print("canGoForward: \(self.webView.canGoForward)")
            }
        }
    }

启用allowsBackForwardNavigationGestures:

    webView.allowsBackForwardNavigationGestures = true

并且不要忘记在 deinit 中删除观察者。

关于ios - WKWebView canGoForward 总是返回 false swift 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68903036/

相关文章:

Android WebView HTML/CSS 在默认浏览器中看起来非常不同

android - 如何检查 webView 是否可以滚动?

android - 用于重定向 href 链接的 android webview backkey 中的死循环

ios - UITableView 一次只勾选一行

ios - future 相对日期人类可读形式

ios - 线程 1 : exc_bad_instruction(code=exc_i386_invop, 子代码=0x0)错误

ios - 使用 NSXMLParser 解析 xml 属性

ios - 当弹出一个 UIWebView Controller 然后回到 UITabBarController 时,tab bar 的高度会改变

从后台杀死应用程序后的 iOS 更新位置

ios - 发送 Http Post 请求在 IoS 中返回 500 状态码