Ios UILongPressGestureRecognitor操作取决于按下持续时间
我需要根据Ios UILongPressGestureRecognitor操作取决于按下持续时间,ios,uigesturerecognizer,Ios,Uigesturerecognizer,我需要根据ui长按手势识别器的按下持续时间采取不同的操作。 例如,在移动触摸之前按下0.5秒会触发与在移动触摸之前按下1秒不同的动作 现在我正在考虑两种不同的方法来实现这一点 a) 添加两个单独的手势识别器,G1的minimumPressDuration为0.5,G2的minimumPressDuration为1,如果G2成功,则在UIgestureRecognitizerDelegate中以某种方式取消G1 b) 添加单个手势识别器,并实现自定义簿记和状态管理,以便选择适当的操作 哪一种是首选
ui长按手势识别器的按下持续时间采取不同的操作。
例如,在移动触摸之前按下0.5秒会触发与在移动触摸之前按下1秒不同的动作
现在我正在考虑两种不同的方法来实现这一点
a) 添加两个单独的手势识别器,G1的minimumPressDuration为0.5,G2的minimumPressDuration为1,如果G2成功,则在UIgestureRecognitizerDelegate中以某种方式取消G1
b) 添加单个手势识别器,并实现自定义簿记和状态管理,以便选择适当的操作
哪一种是首选方式及其原因?UILongPressGestureRecognitor
有两种状态
UIGestureRecognitzerStateStart
和UIGestureRecognitzerStateEnded
您可以测量状态之间的时间间隔,并确定要调用哪个方法
编辑:要处理这种情况,您可以像这样使用NSTimer
if (gesture.state == UIGestureRecognizerStateBegan)
{
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(forOneSec:) userInfo:nil repeats:NO];
[self.timer fire];
}
如果触摸未移动,1秒后将调用长按方法。如果用户在1秒前停止触摸事件,则需要使计时器无效并调用其他方法。我需要处理UIgestureRecognitizerStateChanged以在UIgestureRecognitizerStateEnded之前跟踪触摸移动,并且操作必须取决于任何移动之前的按下持续时间。但是,除非触摸被显著移动,否则处理程序似乎不会收到UIgestureRecognitizerStateChanged。我想我可以测量UIgestureRecognizerStateStart和UIGestureRecognizerStateChanged之间的时间。这相当简单。谢谢你的建议。