计算长时间保持触摸的秒数

时间:2014-12-07 21:03:14

标签: ios objective-c touch

我正在尝试实现一些可以计算屏幕上按住点击的秒数。 我知道有一些触摸事件,如touchDownInside,touchUpInside,touchesBegan等等,但是什么方法可以执行保持触摸?

2 个答案:

答案 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保存当前时间,然后在手势结束时获取新时间并减去结束从开始间隔开始的间隔,以获取用户持有手势的秒数。