WKWebView 旋转后改变其内容偏移滚动方向改变

问题描述

当我在手机上从纵向旋转到横向时,Web 视图会自动将其滚动几乎自动更改到页面内容底部

我已经尝试过 reloadInputViews 这段代码也不能正常工作:

override func viewWillTransition(to size: CGSize,with coordinator: UIViewControllerTransitionCoordinator) {
        super.viewWillTransition(to: size,with: coordinator)
        //webView.reloadInputViews()
        //webView.scrollView.setContentOffset(CGPoint(x: 0,y: 0),animated: false)
        webView.evaluateJavaScript("location.reload();",completionHandler: nil)
    }

这些都不会将网络视图滚动到顶部。实际上,如果可能的话,我什至不需要在旋转后进行此滚动。我想看到从顶部开始的网络视图内容。不管是哪个方向。

解决方法

如果您希望 webView 在旋转时始终滚动到页面顶部,您可以在包含 webView 的 ViewController 上实现此代码。但是,通过查看您注释掉的代码,您似乎已经尝试了一些非常相似的方法。

override func viewWillTransition(to size: CGSize,with coordinator: UIViewControllerTransitionCoordinator) {
    webView.scrollView.setContentOffset(CGPoint(x: 0,y: -self.webView.scrollView.contentInset.top),animated: false)
}

当我在手机上从纵向旋转到横向时,Web 视图会自动将其滚动几乎自动更改到页面内容的底部。

您确定这不是您的代码在某处的副作用吗?如果您在一个空项目上创建一个 webView,然后转到带有滚动的示例网页(例如 Google 搜索结果),则旋转手机会保持 webView 的滚动位置。此外,如果你在一个带有 webview 的空项目中实现上面的代码,它会实现滚动到网页顶部。