我正在尝试实现一些可以计算屏幕上按住点击的秒数。 我知道有一些触摸事件,如touchDownInside,touchUpInside,touchesBegan等等,但是什么方法可以执行保持触摸?
答案 0 :(得分:0)
创建以下两种方法并添加属性。将按钮“Touch Down”事件注释为touchDown:
方法,将“Touch Up Inside”事件注释为touchUp:
方法。
@property (strong, nonatomic) NSDate *touchDownTime;
- (IBAction)touchDown:(id)sender {
self.touchDownTime = [NSDate date];
}
- (IBAction)touchUp:(id)sender {
NSTimeInterval timeDown = [self.touchDownTime timeIntervalSinceNow];
NSLog(@"'timeDown: %0.1f sec", timeDown);
}
如果您需要每隔一秒(或某个时间间隔)执行某项操作,请在touchDown
中启动计时器并在touchUp
中失效。
答案 1 :(得分:0)
正如@NewEngland所说,你应该使用UILongPressGestureRecognizer。这些手势识别器是连续的,因此它会在手势开始时和结束时向您发送通知。
如果您希望以秒为视觉显示,则可以在手势开始时启动计时器,每秒触发一次以更新计数器,并在手势结束时使计时器无效。
如果您只需要计算用户以数字方式保存手势的秒数,请在手势开始时使用NSDate类方法timeIntervalSinceReferenceDate保存当前时间,然后在手势结束时获取新时间并减去结束从开始间隔开始的间隔,以获取用户持有手势的秒数。