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