以编程方式滚动到 WKWebView 的底部不起作用

Scrolling to the bottom of the WKWebView programmatically doesn't work

我有一些遗留代码应该稍微更改以符合 Apple 标准,实际上是为了避免使用 UIWebView 并将其更改为 WKWebView 以便能够定期发布应用程序。

遗留部分中专门用于在加载后页面滚动到底部的代码是这样的,它绝​​对有效:

    public func webViewDidFinishLoad(_ webView: UIWebView) {
        var scrollHeight: CGFloat = webView.scrollView.contentSize.height - webView.bounds.size.height
        if 0.0 > scrollHeight {
            scrollHeight = 0.0
        }
        webView.scrollView.setContentOffset(CGPoint.init(x: 0.0, y: scrollHeight), animated: true)
    }

因为我不得不从应用程序中删除 UIWebView 组件,所以我调整了这样的代码。 添加了 WebKit 导入,使我的 class 符合 WKNavigationDelegate 协议并像这样设置委托: webView.navigationDelegate = self 并实现了如下适当的功能:

public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    var scrollHeight: CGFloat = webView.scrollView.contentSize.height - webView.bounds.size.height
    if 0.0 > scrollHeight {
        scrollHeight = 0.0
    }
    webView.scrollView.setContentOffset(CGPoint.init(x: 0.0, y: scrollHeight), animated: true)
}

现在我不明白当 WKWebView 拒绝将页面滚动到底部时我哪里出错了?

找到解决方案,删除我使用的代码并将其切换为以下代码:

    public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
          webView.evaluateJavaScript("var scrollingElement = (document.scrollingElement || document.body); scrollingElement.scrollTop = scrollingElement.scrollHeight;")
}