如何检测来自两个 UIScrollView(超子)的滚动事件
Posted
技术标签:
【中文标题】如何检测来自两个 UIScrollView(超子)的滚动事件【英文标题】:How to detect scroll event from two UIScrollView( super-sub) 【发布时间】:2016-07-08 07:23:26 【问题描述】:有两个滚动视图。一个是另一个的superView。
我发现当我在子滚动视图上拖动不同时间时,有时会跟踪超级滚动视图,有时会跟踪子滚动视图。
尤其是在子scrollview会触发bounce事件的位置结束时,super-scrollview大部分时间都被跟踪。
那么 (ios) 系统如何决定跟踪哪个滚动视图? 如果我想拖动子滚动视图的位置,可以做什么,跟踪子滚动视图以响应滚动事件,如果我将位置拖出子滚动视图的区域,超级滚动视图响应滚动事件。
【问题讨论】:
您是否覆盖了ScrollView
的scrollViewDidScroll
方法?
问题是您作为开发人员如何检测到这一点,或者 iOS(系统)如何决定滚动哪个滚动视图?
【参考方案1】:
不建议嵌套滚动视图。但是如果你必须拥有它们,你可以通过禁用 UIScrollViews 上的滚动并在容器 UIView 上实现 UIPanGestureRecognizer 来实现。然后,您可以根据需要以编程方式更改两个滚动视图的偏移量。
【讨论】:
【参考方案2】:最后,我通过使用“underView的Gesture.requireGestureRecognizerToFail(upView的手势)”解决了这个问题
【讨论】:
以上是关于如何检测来自两个 UIScrollView(超子)的滚动事件的主要内容,如果未能解决你的问题,请参考以下文章
如何检测用户是不是在 UIScrollView 中回滚了一个视图?
如何在 UIScrollView 上检测“Drag Enter”
如何检测 UIScrollView 的下一页编号为'scrollView.pagingEnabled' = YES?在'scrollViewDidEndDragging'?