我有一个UILongPressGestureRecognizer
连接到控制器的view
. 我想冻结一些计时器,直到用户握住他的手指。问题是我无法确定触摸事件何时结束。也许我应该在手势识别器的属性上使用观察者state
?或者还有其他方法可以做到这一点?
简短的
在控制器的view
a UIScrollView
(实现分页图库)上放置,可以通过拖动(滑动)切换页面。还有一个UITapGestureRecognizer
, 也附加到控制器的view
, 它处理一些其他任务。
我有一个UILongPressGestureRecognizer
连接到控制器的view
. 我想冻结一些计时器,直到用户握住他的手指。问题是我无法确定触摸事件何时结束。也许我应该在手势识别器的属性上使用观察者state
?或者还有其他方法可以做到这一点?
在控制器的view
a UIScrollView
(实现分页图库)上放置,可以通过拖动(滑动)切换页面。还有一个UITapGestureRecognizer
, 也附加到控制器的view
, 它处理一些其他任务。
是的,您可以通过查看识别器的状态来完成此操作,但您不需要使用观察者。您应该在手势识别器的委托中声明一个动作方法,该方法将在识别器触发时调用。然后,只要识别器的状态发生变化,就会自动调用该方法。
您需要查找状态 UIGestureRecognizerStateBegan 来开始您的计时器,并且您需要查找状态 UIGestureRecognizerStateEnded、UIGestureRecognizerStateFailed 和 UIGestureRecognizerStateCancelled 来暂停您的计时器。
只需将您的手势与 Interface Builder 中的操作联系起来。
-(IBAction)longPressBegan:(UILongPressGestureRecognizer *)recognizer
{
if (recognizer.state == UIGestureRecognizerStateBegan)
{
// Long press detected, start the timer
}
else
{
if (recognizer.state == UIGestureRecognizerStateCancelled
|| recognizer.state == UIGestureRecognizerStateFailed
|| recognizer.state == UIGestureRecognizerStateEnded)
{
// Long press ended, stop the timer
}
}
}