如何在WKWebView中禁用弹跳效果

9
我正在运行一个WkWebView,它在我的应用程序中呈现我的网页内容。然而,当我在页面的顶部/底部(垂直方向)滚动时,页面会像普通网页一样弹跳,并且我失去了原生用户体验。
我对这个问题进行了一些研究,这显然是一个相当普遍的问题,但是没有一个答案解决了我的问题。
大多数人建议使用以下方法:wkWebView.scrollView.bounces = false。但出于某种原因,在我的webView中它根本没有影响。
有人能帮忙吗?
即我更喜欢使用本地Swift解决此问题,而不是注入js等。

你尝试过像这个答案中所说的设置偏移量吗:https://stackoverflow.com/questions/36407633/how-to-stop-uiwebview-from-bouncing-vertically-scrolling-bottom - DocForNoc
@DocForNoc 我尝试了,但没有成功。我还注意到一些奇怪的事情,由于某种原因,scrollViewDidScroll根本没有被调用。尽管我设置了wkWebView.scrollView.delegate = self - Hudi Ilfeld
我猜问题出在网页代码上,它禁用了某些滚动视图功能。这显然不是我的 Swift 代码的问题。 - Hudi Ilfeld
可以的。您可以将一个简单的HTML加载到WKWebView实例中,测试是否有任何差异,并接收委托方法以观察其行为。 - DocForNoc
3个回答

23

这是我的工作:

wKWebView.scrollView.bounces = false

1
你是认真的吗?OP说大多数人建议使用以下方法:wkWebView.scrollView.bounces = false。但出于某种原因,它在我的webView中没有任何影响 - LinusGeffarth
1
我同意我在读问题之前就写下了它。但是,是的,我很认真。我需要相同的东西。但是在搜索结果的第一屏中没有答案。解决了我的问题后,我写了适用于我的代码。不要撇下旧问题不回答,这将帮助许多像我一样的人。这有什么问题吗?此答案是对问题标题搜索时的99.9%的响应。 - missionMan
如果 bounces = NO 不起作用,可能是因为您的 webview 没有初始化。请验证在禁用弹跳时,您的 webview 不是 nil。 - Jonathan Chandler
在 obj-c 中,相应的命令是什么?我正在使用 cordova,它仍然依赖于 ios 的 obj-c。 - Uche Ozoemena

5

对于我来说,当我设置以下两个内容时它是有效的:

webView.scrollView.alwaysBounceVertical = false
webView.scrollView.bounces = false

但是一些H5仍然会反弹,我猜这是由网站本身引起的情况。


在 obj-c 中等价的命令是什么?我正在使用 cordova,它仍然依赖于 ios 的 obj-c。 - Uche Ozoemena
你有找到什么方法来防止网站上的跳转吗? - Uche Ozoemena

3
这可能是您执行操作的位置有问题。如果在 LoadView 函数中执行,则无法正常工作,必须在 ViewDidLoad 函数中运行才能生效。
    override func viewDidLoad() {
        super.viewDidLoad()

        mainWebView.scrollView.bounces = false
        ...

在obj-c中,相应的命令是什么?我正在使用cordova,它仍然依赖于ios的obj-c。 - Uche Ozoemena
@UcheOzoemena https://dev59.com/NnRB5IYBdhLWcg3wz6ed - hong developer
@UcheOzoemena 上面的链接将为您提供解决方案。 - hong developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接