传递触摸手势

时间:2012-01-11 07:39:41

标签: iphone objective-c ios xcode ipad

我正在寻找一种解决方案来帮助“传递”一个触摸手势。

基本上我有一个菜单,我希望用户能够通过一次连续拖动将菜单中的项目拖放到画布。

我已经通过平移手势实现了可拖动的图像(我们将这些实例称为Sprite)。我还可以使用带有触摸手势的按钮或UIImageView在UIView上的任何地方实例化Sprite。

然而,这目前需要两次接触。一个触摸菜单项按钮并释放,创建Sprite。第二个触及精灵,允许用户拖动它,然后将它释放到他们想要的地方。我想合并这些触摸,以便当用户触摸菜单项时,Sprite被实例化并且已经在平移手势内,或者那些影响。

如果有帮助,我附上了视觉描述。任何帮助表示赞赏。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:4)

无法人为地强制UIGestureRecognizer识别传递给不同视图的触摸。

From the Gesture Recognizer docs:

  

事件的交付最初遵循通常的路径:从操作开始   系统将应用程序对象表示为窗体对象   触摸正在发生的窗口。但在发送活动之前   对于经过命中测试的视图,窗口对象将其发送到手势   识别器附加到该视图或该视图的任何子视图。   图3-1说明了这条通用路径,数字表示   接收触摸的顺序。

图3-1

enter image description here

事件的交付由系统自动发生,并传递到适当的视图。

要执行您想要的操作,我将在子视图(包含您的UIButton的视图)上实现UIGestureRecognizer,然后按下创建Sprite对象的实例并使用子视图的手势识别器操作该对象。或者,您可以使用-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)even自行重新定位对象。