【发布时间】:2017-12-01 02:13:49
【问题描述】:
我是 Swift 的初学者,我遇到了一个问题。
我想创建一个包含计时器和按钮的类 每次点击按钮时我都必须重新启动计时器,如果计时器启动和点击按钮之间经过的时间大于(或等于)400 毫秒,我必须调用选择器中的函数。
但是 swift 中没有“GetTimeElapsed()”方法,我不知道该怎么做。 如果你有一些线索/教程可能会很酷!
谢谢大家
【问题讨论】:
我是 Swift 的初学者,我遇到了一个问题。
我想创建一个包含计时器和按钮的类 每次点击按钮时我都必须重新启动计时器,如果计时器启动和点击按钮之间经过的时间大于(或等于)400 毫秒,我必须调用选择器中的函数。
但是 swift 中没有“GetTimeElapsed()”方法,我不知道该怎么做。 如果你有一些线索/教程可能会很酷!
谢谢大家
【问题讨论】:
几个小步骤:
定义开始时间:(应该在你启动计时器的同时发生)
startTime = (NSDate.timeIntervalSinceReferenceDate())
测量时差
let elapsed = NSDate.timeIntervalSinceReferenceDate() - startTime
【讨论】:
默认情况下,NSTimer 没有此功能。
正确的方法是处理日期并进行比较。
顺便说一句,你可以像这样做一个很好的扩展:
public extension NSTimer {
var elapsedTime: NSTimeInterval? {
if let startDate = self.userInfo as? NSDate {
return NSDate().timeIntervalSinceDate(startDate)
}
return nil
}
}
这样,当你创建你的定时器时,你必须设置userInfo:
let timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(foo), userInfo: NSDate(), repeats: true)
在您的“foo”方法中,您可以测试经过的时间:
func foo() {
print(self.timer.elapsedTime)
}
【讨论】: