2012-01-11 293 views
2

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

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

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

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

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

enter image description here

回答

4

没有人为强迫UIGestureRecognizer认识传递给了不同的看法触摸方式。

From the Gesture Recognizer docs:

事件的递送最初遵循通常的路径:从操作 系统向应用程序对象来表示 窗口,其中所述触摸被出现的窗口对象。但在将事件 发送到经过命中测试的视图之前,窗口对象会将其发送到附加到该视图或该视图的任何子视图的手势 识别器。 图3-1说明了这个一般路径,其中数字表示 接收触摸的顺序。

图3-1

enter image description here

事件的递送由系统automaticaly发生并被传送到相应的视图。

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

+0

谢谢。我选择按照您的建议进行操作,并在我的菜单按钮的UIPanGestureRecognizer中实现创建新的精灵。当平移从按钮开始时,我在相同的位置实例化精灵类。一些翻译代码现在将移动该精灵。发布后,精灵拥有自己的泛识别器控件。 – user339946 2012-01-12 06:23:58