在实例化时从按下状态开始UIPanGesture事件

如果在实例化对象的时候已经按下了手指,是否有办法开始UIPanGestureEvent?

我有一个情况,当一个用户在屏幕上持有他们的发现,我在他们的手指下创build一个UIView。

我希望他们能够拖动,因此我已经把一个UIPanGestureRecognizer里面的UIView。

问题是我需要把手指放回来,触发UIPanGestureRecognizer启动。 我需要从已经按下的状态开始。

你知道我如何能够从一个已经按下的状态激活一个UIPanGesture,即我可以得到实例化时已经激活的触摸事件,并传递它?

你可以这样做,但是UIPanGestureRecognizer需要在你创build的视图背后的视图中存在(然后你将不得不根据这个来调整你的计算;不难)。

原因是,在你描述的情况下,触摸不属于你创build的UIView – 它属于它后面的UIView,用户最初触摸的UIView。 考虑到iOS touch交付的性质,您不能轻易改变这一点。 因此,让这个视图(实际的原始触摸视图)对这个触摸进行处理会更简单。

我认为马特的解决scheme是最好的,所以我打算把它标记为正确的。

但是我的代码结构不能让我干净地实现它。 使问题变得复杂的是对象正在侦听UILongGestureRecognizer。

所以我的解决scheme如下:

  1. 在我的ViewController中创build一个处理longGestureOverride调用的callback函数

  2. 向侦听longGesture的对象添加一个callback,该对象将调用longGestureOverridecallback并传递该点

  3. 根据传回的点手动移动对象

  4. 如果用户抬起手指,则禁用longGestureOverridecallback,并开始在新对象内使用UIPanGesture