10

UILongPressGesture 在 ios 版本 3.2 及更高版本中可用。但我正在尝试开发应用程序以获得最大的兼容性,因此针对 ios ver2.0

谁能指导我如何在 ios v2.0 中完成长按手势

4

2 回答 2

18

对于单个手指,这非常简单:在touchesBegan方法中启动一个计时器,并在计时器触发时触发一个动作。如果touchesEnded在它触发之前得到 a,请取消计时器。这是一个使用该performSelector:withObject:afterDelay:方法的实现。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self performSelector:@selector(fireLongPress)
               withObject:nil
               afterDelay:LONG_PRESS_THRESHOLD];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
}

- (void)fireLongPress {
    // do what you want to do
}

如果手指移动得太远,您可能还想终止计时器。

使用多点触控,它有点复杂。您必须跟踪哪个触摸是哪个,并决定要做什么,例如,当一个手指按下足够长的时间而另一根手指没有按下时(或弄清楚是什么UILongPressGestureRecognizer)。

于 2010-12-30T20:40:20.957 回答
1

touches...在您的视图中实现方法。touchesBegan:withEvent:如果在任何事件之间和touchesEnded:withEvent:没有任何事件之间经过了一定的时间touchesMoved:withEvent:,则您需要长按。

于 2010-12-30T20:29:25.510 回答