ios - 将拖动触摸传播到 UIScrollView super View

标签 ios uiscrollview uigesturerecognizer superview

我一直在这里寻找所有其他类似的主题,使用 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/

相关文章:

iPhone UIViewController 进入状态栏

ios - 在后台线程中向 UIScrollView 添加大量按钮 - 按钮不可见

iphone - 为什么我们必须将手势识别器的旋转/缩放设置回0/1?

ios - 将 UIPanGestureRecognizer 和 UISwipeGestureRecognizer 添加到同一 View 会导致在设置 requireGestureToFail 后发生冲突

ios - 如何获取从 nib ios 加载的自定义 View 的实际大小

ios - 将 UIAlertView 单击转发到另一个 Controller

ios - GMAP3 InfoWindows 不会在 iOS 浏览器上关闭

iphone - iOS 6 中的 UIScrollView

ios - 在 ios-charts subview 上拖动时,uiscrollview 不会滚动

ios - 将 UICollectionView 的某些部分的触摸传递给底层 View