在实例化时从压制状态开始UIPanGesture事件

时间:2015-01-06 01:49:58

标签: ios xcode swift uiview uigesturerecognizer

如果在实例化对象时手指已被按下,有没有办法开始UIPanGestureEvent?

我的情况是,当用户在屏幕上查找他们的查找时,我会在他们的手指下创建一个UIView。

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

问题是我需要关闭手指并将其放回以触发UIPanGestureRecognizer启动。我需要它从一个已经按下的状态开始。

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

2 个答案:

答案 0 :(得分:2)

您可以这样做,但UIPanGestureRecognizer需要已经存在于您创建的视图后面的后面(然后您必须根据此调整计算;并不困难)。< / p>

原因是,在您描述的情况下,触摸不属于您创建的UIView - 它属于它背后的UIView,即用户最初触摸的UIView。鉴于iOS触摸传送的性质,您无法轻易改变它。因此,让这个视图(实际的原始触摸视图)处理这种触摸会更简单。

答案 1 :(得分:2)

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

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

所以我的解决方案如下:

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

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

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

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