UILongPressGesture 在 ios 版本 3.2 及更高版本中可用。但我正在尝试开发应用程序以获得最大的兼容性,因此针对 ios ver2.0
谁能指导我如何在 ios v2.0 中完成长按手势
UILongPressGesture 在 ios 版本 3.2 及更高版本中可用。但我正在尝试开发应用程序以获得最大的兼容性,因此针对 ios ver2.0
谁能指导我如何在 ios v2.0 中完成长按手势
对于单个手指,这非常简单:在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
)。
touches...
在您的视图中实现方法。touchesBegan:withEvent:
如果在任何事件之间和touchesEnded:withEvent:
没有任何事件之间经过了一定的时间touchesMoved:withEvent:
,则您需要长按。