我一直在这里寻找所有其他类似的主题,使用 UIGestureRecognizers、使用 hitTest:withEvent、pointInside:withEvent: 等,但似乎没有什么适合我需要实现的目标。
基本上,我有一个主视图(常见 UIViewController 的 self.view)和一个在底部附加到其上的小矩形 UIScrollView:scrollView 填充了一些 UIImageView,用户可以像往常一样滚动它。
但是用户还应该能够将一个 UIImageView (或其副本)从 UIScrollView 拖动到主视图,并且,这是我发现非常困难的,使用相同的拖动手势,因此我需要一个方式:
1) 区分正常的水平滚动手势(应由 UIScrollView 以通常的方式处理)和 ImageView 上的拖动手势。
2) 一旦识别出拖动手势,应将触摸传播到 super View ,该 super View 将托管 UIImageView 的副本,并使用相同的拖动手势继续在主视图上拖动,甚至超出 UIScrollView 的边界。
请注意,我知道如果 UIScrollView 有 userInteractionEnabled = NO 触摸会传播到 subview ,但是 1)我想将其传播到 super View 而不是 subview ,2) userInteractionEnabled 属性显然只有在初始手势已终止,而我需要使用单个拖动手势。
非常感谢您的帮助。
最佳答案
到目前为止,我最终实现了 UIScrollView 子类的 touchesShouldBegin:withEvent:inContentView:
方法,但将 delayContentTouches
设置为 YES(默认)而不是 NO正如@nhahtdh 所建议的那样。
奇怪的是,即使只实现该方法也足以让我的 subview 拦截拖动,并且我的 ScrollView 仍然正确滚动,而将delayContentTouches设置为NO时,我无法滚动它,因为所有 subview 都开始移动.
这确实归功于@nhahtdh,所以伙计,如果您发布答案,我会接受它,非常感谢您的帮助。
关于ios - 将拖动触摸传播到 UIScrollView super View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544013/