UILongPressGesture可在ios ver 3.2及更高版本中使用。但我正在尝试开发应用程序以实现最大兼容性,从而针对ios ver2.0
任何人都可以指导我如何在ios v2.0中完成长按手势
答案 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:
个事件,则需要长按。