在实例化时从按下状态开始 UIPanGesture 事件
Begin UIPanGesture Event From A Pressed State At Time Of Instantiation
如果实例化对象时手指已经按下,是否有方法开始 UIPanGestureEvent?
我遇到这样一种情况,当用户在屏幕上按住他们的查找内容时,我会在他们的手指下创建一个 UIView。
我希望他们能够拖动它,因此我在 UIView 中放置了一个 UIPanGestureRecognizer。
问题是我需要把手指拿开再放回去触发 UIPanGestureRecognizer 启动。我需要它从已经按下的状态开始。
您知道如何从已按下的状态激活 UIPanGesture,即我能否获取实例化时已经激活的触摸事件并将其传递?
您可以这样做,但是 UIPanGestureRecognizer 需要已经存在于您创建的视图 后面 的视图中(然后您将不得不根据此调整您的计算;不难)。
原因是,在您描述的情况下,触摸不属于您创建的 UIView - 它属于它后面的 UIView,即用户最初感人。考虑到 iOS 触摸交付的性质,您无法轻易更改它。所以让那个视图,实际的原始触摸视图,做这个触摸的处理会更简单。
我认为 Matt 的解决方案是最好的,所以我将其标记为正确。
但是我的代码结构不允许我干净地实现它。使问题更加复杂的是对象侦听正在侦听 UILongGestureRecognizer。
所以我的解决方案如下:
在我的 ViewController 中创建一个回调来处理 longGestureOverride 调用
向侦听 longGesture 的对象添加一个回调,该回调将调用 longGestureOverride 回调并传递点
根据传回的点手动移动物体
如果用户抬起手指,我将禁用 longGestureOverride 回调,并开始在新对象中使用 UIPanGesture
如果实例化对象时手指已经按下,是否有方法开始 UIPanGestureEvent?
我遇到这样一种情况,当用户在屏幕上按住他们的查找内容时,我会在他们的手指下创建一个 UIView。
我希望他们能够拖动它,因此我在 UIView 中放置了一个 UIPanGestureRecognizer。
问题是我需要把手指拿开再放回去触发 UIPanGestureRecognizer 启动。我需要它从已经按下的状态开始。
您知道如何从已按下的状态激活 UIPanGesture,即我能否获取实例化时已经激活的触摸事件并将其传递?
您可以这样做,但是 UIPanGestureRecognizer 需要已经存在于您创建的视图 后面 的视图中(然后您将不得不根据此调整您的计算;不难)。
原因是,在您描述的情况下,触摸不属于您创建的 UIView - 它属于它后面的 UIView,即用户最初感人。考虑到 iOS 触摸交付的性质,您无法轻易更改它。所以让那个视图,实际的原始触摸视图,做这个触摸的处理会更简单。
我认为 Matt 的解决方案是最好的,所以我将其标记为正确。
但是我的代码结构不允许我干净地实现它。使问题更加复杂的是对象侦听正在侦听 UILongGestureRecognizer。
所以我的解决方案如下:
在我的 ViewController 中创建一个回调来处理 longGestureOverride 调用
向侦听 longGesture 的对象添加一个回调,该回调将调用 longGestureOverride 回调并传递点
根据传回的点手动移动物体
如果用户抬起手指,我将禁用 longGestureOverride 回调,并开始在新对象中使用 UIPanGesture