1

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

  1. 图标有触摸事件
  2. 添加透明的全屏 UIView 并粘贴一个包含图标的 UIImageView 。
  3. 跟踪 touchMoves 或 uiPanGestureRecognizer 并移动 UIImageView 直到触摸

问题是 touchMoves(和 uiPanGestureRecognizer)在用户抬起手指并放回原位之前不会跟踪。即正在发生的事情是:

  1. 图标有触摸事件
  2. 添加透明的全屏 UIView 并添加一个包含图标的 UIImageView 子视图。
  3. 用户拖动手指并没有任何反应,所以他们抬起手指并再次拖动
  4. 跟踪 touchMoves 或 uiPanGestureRecognizer 并移动 UIImageView 直到触摸

显然,要让 UIView 识别拖动,它似乎必须源自 UIView。我尝试(天真地)将触地事件发送到透明视图,但它不起作用。

还有其他想法吗?

非常感谢...

4

2 回答 2

1

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

于 2010-10-04T23:27:09.593 回答
1

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

于 2010-11-27T21:59:45.403 回答