gpt4 book ai didi

ios7 - _adjustContentOffsetIfNecessary - UIScrollView 自动滚动到顶部

转载 作者:行者123 更新时间:2023-12-04 04:41:28 26 4
gpt4 key购买 nike

在 iOS 7 上。
我有导航 Controller ,我在堆栈顶部推送了一个新的 VC。

那个新的 VC 有一个 UIScrollView 填充 VC 的 Root View 并垂直滚动。如果我向下滚动一点,然后尝试使用“滑动返回”/“滑动弹出”手势,垂直 ScrollView 首先滚动到顶部,然后识别 interactivePopGesture,我可以拖动顶部的 VC左右堆叠。

为什么会这样?
我希望防止我的 ScrollView 在识别“滑动返回”手势之前自动滚动到顶部。
我该怎么做呢?

更新#1:

当我创建一个新的 xcode 项目时,我似乎无法重现这个错误,所以这肯定是我在原始项目中的错误。找到原因后会更新。

更新#2:

当 interactivePopGesture 被识别时,setContentOffset在我的垂直 ScrollView 上调用方法。在调试时,我看到 setContentOffsetUIScrollViewInternal _adjustContentOffsetIfNecessary 调用.

更新#3:

在以下情况下会发生同样的问题:
我在垂直 UIScrollView 中有 UITextFields。当按下某个 UITextField 时,会出现一个键盘。当我想以交互方式关闭键盘时(通过在键盘上拖动 ScrollView ),在我释放拖动后,会发生故障。 UIScrollView 的内容偏移量暂时设置为零,然后设置回原始内容偏移量并继续动画。 contentOffset 这个不需要的设置也被 UIScrollViewInternal _adjustContentOffsetIfNecessary 调用.

我继续用我自己的 UIScrollView 子类替换了这两种情况下的 UIScrollView。在那个子类中,我重写了一个私有(private)方法 -(void) _adjustContentOffsetIfNecessary作为一个空的 void 方法。我的两个问题都解决了,我找不到任何负面后果。这不是一个解决方案,我不会使用这种方法,因为我不知道我到底做了什么。

最佳答案

我在 iOS 14 中遇到了同样的问题。看起来没有正常的方法来阻止 _adjustContentOffsetIfNecessary 的调用.覆盖 didMoveToWindow()在问题 View 中帮助我

override func didMoveToWindow() {
super.didMoveToWindow()
// window == nil when new screen pushed
if window == nil {
// Set correct offset that was before
}
}

关于ios7 - _adjustContentOffsetIfNecessary - UIScrollView 自动滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com