两次活动之间的时间

时间:2014-09-26 12:02:45

标签: ios swift ibaction uievent

我还没有在iOS上编程很长时间,但我只是想知道是否有人可以提供帮助。 我有一个IBAction功能,每次按下它都会增加一个计数器,这样我就可以看到它被按下了多少次。但是我想添加功能,所以当它被按下时我可以显示每次按下之间的时间。 因此,如果他们按下按钮,则弹出一个按钮。然后他们再次按下它,弹出2个按钮,但也按下了它们按下的时间。 我不确定如何实现这一点,因为我不确定如何找到事件的时间。有UIEvent的时间戳,但我不完全确定如何使用它。

2 个答案:

答案 0 :(得分:3)

除非你需要极高的准确度,否则它可能足以获得调用IBAction方法的当前时间,在这种情况下你可以这样做:

- (IBAction) buttonAction: (id) inButton
{
    NSDate              *now = [NSDate date];

    if (self.lastEventTime != nil) {
        NSTimeInterval      timeSinceLast = [now timeIntervalSinceDate: self.lastEventTime];

        NSLog(@"time since last press: %f seconds", timeSinceLast);
    }

    self.lastEventTime = now;
}

以下是Swift的外观:

class SomeController: UIViewController {
    var lastEventTime                   : NSDate?

    @IBAction func buttonAction(inButton: AnyObject) {
        let now = NSDate()

        if let lastEventTime = self.lastEventTime {
            let timeSinceLast = now.timeIntervalSinceDate(lastEventTime)

            println("time since last press: \(timeSinceLast) seconds")
        }

        self.lastEventTime = now
    }
}

答案 1 :(得分:-2)

您可以拥有每次分配的NSDate属性,该事件被触发。然后,您总是比较属性和当前时间之间的差异。

@property (nonatomic) NSDate *lastEventDate;

- (IBAction) clicked:(id)sender{
      NSDate *now = [NSDate date];
      NSTimeInterval differenceBetweenDatesInSeconds = [self.lastEventDate timeIntervalSinceDate:now];

      //Do something with the interval (show it in the UI)
      [self setLastEventDate:now];
}