- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 iOS 7 上。
我有导航 Controller ,我在堆栈顶部推送了一个新的 VC。
那个新的 VC 有一个 UIScrollView 填充 VC 的 Root View 并垂直滚动。如果我向下滚动一点,然后尝试使用“滑动返回”/“滑动弹出”手势,垂直 ScrollView 首先滚动到顶部,然后识别 interactivePopGesture,我可以拖动顶部的 VC左右堆叠。
为什么会这样?
我希望防止我的 ScrollView 在识别“滑动返回”手势之前自动滚动到顶部。
我该怎么做呢?
更新#1:
当我创建一个新的 xcode 项目时,我似乎无法重现这个错误,所以这肯定是我在原始项目中的错误。找到原因后会更新。
更新#2:
当 interactivePopGesture 被识别时,setContentOffset
在我的垂直 ScrollView 上调用方法。在调试时,我看到 setContentOffset
从 UIScrollViewInternal _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/
在 iOS 7 上。 我有导航 Controller ,我在堆栈顶部推送了一个新的 VC。 那个新的 VC 有一个 UIScrollView 填充 VC 的 Root View 并垂直滚动。如果我向下
我是一名优秀的程序员,十分优秀!