Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UILongPressGestureRecognitor操作取决于按下持续时间_Ios_Uigesturerecognizer - Fatal编程技术网

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之间的时间。这相当简单。谢谢你的建议。