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