如何在 iOS 上的重叠视图上引导事件

Posted

技术标签:

【中文标题】如何在 iOS 上的重叠视图上引导事件【英文标题】:How to direct events on overlapped views on iOS 【发布时间】:2016-07-03 08:50:58 【问题描述】:

最近我遇到了一个棘手的案例。我有这样的视图层次结构:

UIView (0, 0, 500, 300)

+-- UIScrollView (0, 0, 500, 300)

+-- UICollectionView (0, 0, 500, 300)

在这个层次结构中,我在同一框架中的 UIView 上添加了 UIScrollview 和 UICollectionView。所以 UICollectionView 就在 UIScrollView 之上。

我想要实现的功能是:

    用一根手指滑动会影响 UICollectionView 用两根手指的平移手势和捏合手势将滚动和缩放 UIScrollView。

请让我知道实现这一目标的最佳方法是什么。

谢谢!

【问题讨论】:

集合视图是滚动视图的子视图吗?如果不是,为什么你认为用手势来操纵不可见的视图是一个很好的设计? 谢谢@Avi,我可以做出这个改变。如果是这样的话,我不确定我是否可以让这个案例更简单 【参考方案1】:

尝试使用控制器touchesDidMoved的方法。有了它,您可以检测您获得了多少次触摸,并将内容偏移设置为您的UIScrollViewUICollectionView

仍然不知道这是否是最好的方法,mb 有更好的方法。

【讨论】:

以上是关于如何在 iOS 上的重叠视图上引导事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有状态栏重叠的情况下在 iOS7 上呈现视图控制器

重叠视图iOS7上的状态栏

如何将子视图上的触摸事件的坐标转换为其父视图中的坐标?

如何检查多个 UIView 子视图相互重叠显示的贝塞尔路径内的触摸事件?

如何在BackboneJS中绑定视图元素上的事件?

如何在 SwiftUI 中添加与内容重叠的按钮上方的渐变? iOS 13