0

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

4

2 回答 2

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
    }
}
于 2014-09-26T12:16:15.087 回答
-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];
}
于 2014-09-26T12:23:25.373 回答