kickstarting touchesMoved / UIPanGestureRecognizer mid-move以获得新视图

时间:2010-09-24 11:59:47

标签: ipad uiview drag-and-drop uigesturerecognizer touchesmoved

概念是用户点击视图中的图标,图标的副本会弹出用户的手指,他们可以拖动它直到他们抬起手指。为此,我希望以下

  1. 图标有触摸事件
  2. 添加透明的整个屏幕UIView并粘贴一个包含图标的UIImageView。
  3. 跟踪touchMoves或uiPanGestureRecognizer并移动UIImageView直到修饰
  4. 问题是touchMoves(和uiPanGestureRecognizer)在用户抬起手指并将其放回原位之前不会跟踪。即发生的事情是:

    1. 图标有触摸事件
    2. 添加透明的整个屏幕UIView并添加一个包含图标的UIImageView子视图。
    3. 用户拖动手指没有任何反应,所以他们举起手指并再次拖动
    4. 跟踪touchMoves或uiPanGestureRecognizer并移动UIImageView直到修饰
    5. 显然,对于UIView来识别拖拽,它似乎必须来自UIView。我试图(天真地)将触地事件发送到透明视图,但它无法正常工作。

      还有其他想法吗?

      非常感谢...

2 个答案:

答案 0 :(得分:1)

据我所知,除了启动拖动之外的任何视图都无法启动拖动。对于那些有权访问的人,请查看autoscroll WWDC 2010项目。它们基本上开始拖动表格单元格的视图,然后允许您将TableCell拖离桌面视图。它运作良好,可能是我将要采取的路线。

答案 1 :(得分:1)

诀窍是使用单个UIPanGestureRecognizer。将一个添加到原始“图标”(UIView)并使用它来检测初始触摸和平移的开始。当UIPanGestureRecognizer输入UIGestureRecognizerStateBegan时,创建将为拖动设置动画的视图。原始图标视图和处理程序将继续接收回调。您可以测试UIGestureRecognizerStateChanged并从原始处理程序中翻译新的移动视图。