我正在寻找一种解决方案来帮助“传递”一个触摸手势。
基本上我有一个菜单,我希望用户能够通过一次连续拖动将菜单中的项目拖放到画布。
我已经通过平移手势实现了可拖动的图像(我们将这些实例称为Sprite)。我还可以使用带有触摸手势的按钮或UIImageView在UIView上的任何地方实例化Sprite。
然而,这目前需要两次接触。一个触摸菜单项按钮并释放,创建Sprite。第二个触及精灵,允许用户拖动它,然后将它释放到他们想要的地方。我想合并这些触摸,以便当用户触摸菜单项时,Sprite被实例化并且已经在平移手势内,或者那些影响。
如果有帮助,我附上了视觉描述。任何帮助表示赞赏。谢谢!
答案 0 :(得分:4)
无法人为地强制UIGestureRecognizer识别传递给不同视图的触摸。
From the Gesture Recognizer docs:
事件的交付最初遵循通常的路径:从操作开始 系统将应用程序对象表示为窗体对象 触摸正在发生的窗口。但在发送活动之前 对于经过命中测试的视图,窗口对象将其发送到手势 识别器附加到该视图或该视图的任何子视图。 图3-1说明了这条通用路径,数字表示 接收触摸的顺序。
图3-1
事件的交付由系统自动发生,并传递到适当的视图。
要执行您想要的操作,我将在子视图(包含您的UIButton的视图)上实现UIGestureRecognizer,然后按下创建Sprite对象的实例并使用子视图的手势识别器操作该对象。或者,您可以使用-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)even
自行重新定位对象。