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

Begin UIPanGesture Event From A Pressed State At Time Of Instantiation

如果实例化对象时手指已经按下,是否有方法开始 UIPanGestureEvent?

我遇到这样一种情况,当用户在屏幕上按住他们的查找内容时,我会在他们的手指下创建一个 UIView。

我希望他们能够拖动它,因此我在 UIView 中放置了一个 UIPanGestureRecognizer。

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

您知道如何从已按下的状态激活 UIPanGesture,即我能否获取实例化时已经激活的触摸事件并将其传递?

您可以这样做,但是 UIPanGestureRecognizer 需要已经存在于您创建的视图 后面 的视图中(然后您将不得不根据此调整您的计算;不难)。

原因是,在您描述的情况下,触摸不属于您创建的 UIView - 它属于它后面的 UIView,即用户最初感人。考虑到 iOS 触摸交付的性质,您无法轻易更改它。所以让那个视图,实际的原始触摸视图,做这个触摸的处理会更简单。

我认为 Matt 的解决方案是最好的,所以我将其标记为正确。

但是我的代码结构不允许我干净地实现它。使问题更加复杂的是对象侦听正在侦听 UILongGestureRecognizer。

所以我的解决方案如下:

  1. 在我的 ViewController 中创建一个回调来处理 longGestureOverride 调用

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

  3. 根据传回的点手动移动物体

  4. 如果用户抬起手指,我将禁用 longGestureOverride 回调,并开始在新对象中使用 UIPanGesture