如果在实例化对象时手指已被按下,有没有办法开始UIPanGestureEvent?
我的情况是,当用户在屏幕上查找他们的查找时,我会在他们的手指下创建一个UIView。
我希望他们可以拖动它,因此我在UIView中放置了一个UIPanGestureRecognizer。
问题是我需要关闭手指并将其放回以触发UIPanGestureRecognizer启动。我需要它从一个已经按下的状态开始。
你知道我如何从已经按下的状态激活UIPanGesture,即我可以获得在实例化时已经激活的触摸事件并传递它吗?
答案 0 :(得分:2)
您可以这样做,但UIPanGestureRecognizer需要已经存在于您创建的视图后面的后面(然后您必须根据此调整计算;并不困难)。< / p>
原因是,在您描述的情况下,触摸不属于您创建的UIView - 它属于它背后的UIView,即用户最初触摸的UIView。鉴于iOS触摸传送的性质,您无法轻易改变它。因此,让这个视图(实际的原始触摸视图)处理这种触摸会更简单。
答案 1 :(得分:2)
我认为马特的解决方案是最好的,所以我要将其标记为正确。
但是我的代码结构不允许我干净地实现它。使问题更复杂的是对象监听正在侦听UILongGestureRecognizer。
所以我的解决方案如下:
在我的ViewController中创建一个可以处理longGestureOverride调用的回调
向侦听longGesture的对象添加回调,该对象将调用longGestureOverride回调并传递点
根据传回的点手动移动对象
如果用户抬起手指,我会禁用longGestureOverride回调,并开始在新对象中使用UIPanGesture