efp*_*ies 6 objective-c touch uiscrollview uigesturerecognizer ios
我有一个UILongPressGestureRecognizer附加到控制器的view.我想冻结一些计时器,直到用户握住他的手指.问题是我无法确定触摸事件何时结束.也许我应该在手势识别器的属性上使用观察者state?或者还有其他方法可以做到这一点?
在控制器viewa UIScrollView(实现分页库)上,可以通过拖动(滑动)切换页面.还有一个UITapGestureRecognizer,也连接到控制器view,它处理一些其他任务.
小智 25
是的,您可以通过查看识别器的状态来完成此操作,但您不需要使用观察者.您应该在识别器触发时在手势识别器的委托中声明一个操作方法.只要识别器的状态发生变化,就会自动调用该方法.
您需要查找状态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
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5794 次 |
| 最近记录: |