如何检测来自两个 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) 系统如何决定跟踪哪个滚动视图? 如果我想拖动子滚动视图的位置,可以做什么,跟踪子滚动视图以响应滚动事件,如果我将位置拖出子滚动视图的区域,超级滚动视图响应滚动事件。

【问题讨论】:

您是否覆盖了ScrollViewscrollViewDidScroll 方法? 问题是您作为开发人员如何检测到这一点,或者 iOS(系统)如何决定滚动哪个滚动视图? 【参考方案1】:

不建议嵌套滚动视图。但是如果你必须拥有它们,你可以通过禁用 UIScrollViews 上的滚动并在容器 UIView 上实现 UIPanGestureRecognizer 来实现。然后,您可以根据需要以编程方式更改两个滚动视图的偏移量。

【讨论】:

【参考方案2】:

最后,我通过使用“underView的Gesture.requireGestureRecognizerToFail(upView的手势)”解决了这个问题

【讨论】:

以上是关于如何检测来自两个 UIScrollView(超子)的滚动事件的主要内容,如果未能解决你的问题,请参考以下文章

如何检测用户是不是在 UIScrollView 中回滚了一个视图?

如何在 UIScrollView 上检测“Drag Enter”

如何检测 UIScrollView 何时变为可滚动?

UIScrollView 服装分页大小

2 UIScrollView 检测当前页面并加载正确的页面

如何检测 UIScrollView 的下一页编号为'scrollView.pagingEnabled' = YES?在'scrollViewDidEndDragging'?