将拖动触摸传播到UIScrollView superview

时间:2012-11-24 18:04:39

标签: ios uiscrollview uigesturerecognizer superview

我一直在寻找所有其他类似的主题,使用UIGestureRecognizers,使用hitTest:withEvent,pointInside:withEvent:等等,但似乎没有什么比我需要实现的更好。

基本上我有一个主视图(一个常见的UIViewController的self.view)和一个附在它底部的小矩形UIScrollView:scrollView中有一些UIImageViews,用户可以照常滚动它。

但是用户还应该能够将一个UIImageView(或它的副本)从UIScrollView拖到主视图中,这就是我发现的非常困难,使用相同的拖动手势,因此我需要一个方式:

1)区分正常的水平滚动手势,应该通过UIScrollView以常规方式处理,并在图像视图上拖动手势。

2)一旦确定了拖动手势,就应该将触摸传播到superview,它将托管UIImageView的副本,并且使用SAME拖动手势继续拖动主视图,甚至超出UIScrollView的范围。 / p>

请注意,我知道如果UIScrollView具有userInteractionEnabled = NO,则触摸将传播到子视图,但是1)我想将其传播到超级视图而不是子视图,2)userInteractionEnabled属性显然仅在初始手势终止,而我需要使用单个拖动手势。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

所以,到目前为止,我已经最终实现了我的UIScrollView子类的touchesShouldBegin:withEvent:inContentView:方法,但delayContentTouches设置为YES(默认值)而不是@nhahtdh建议的NO。

奇怪的是,即使只实现该方法足以让我的子视图拦截拖动,仍然我的滚动视图正确滚动,而将delayContentTouches设置为NO我无法滚动它,因为所有子视图都开始移动

真的值得信赖的是@nhahtdh,所以,如果你发一个答案,我会接受它,非常感谢你的帮助。