如何在iOS 3.2以下的iOS中获得Long Press手势的功能

时间:2010-12-30 20:09:42

标签: ios iphone-sdk-2

UILongPressGesture可在ios ver 3.2及更高版本中使用。但我正在尝试开发应用程序以实现最大兼容性,从而针对ios ver2.0

任何人都可以指导我如何在ios v2.0中完成长按手势

2 个答案:

答案 0 :(得分:18)

对于单个手指,它非常简单:在touchesBegan方法中启动计时器,并在计时器触发时触发操作。如果在touchesEnded发生之前取消计时器,请取消计时器。这是一个使用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做了什么)。

答案 1 :(得分:1)

在视图中实施touches...方法。如果在touchesBegan:withEvent:touchesEnded:withEvent:之间经过一段时间而没有任何touchesMoved:withEvent:个事件,则需要长按。