getTimeElapsed 在 Swift 与 NSTimer
getTimeElapsed in Swift with NSTimer
我是 Swift 的初学者,我遇到了一个问题。
我想创建一个包含计时器和按钮的 class
每次点击按钮我都必须重新启动计时器,如果计时器启动和点击按钮之间经过的时间大于(或等于)400 毫秒,我必须调用选择器中的函数。
但是 swift 中没有 "GetTimeElapsed()" 方法,我不知道该怎么做。
如果你有一些 clue/tutorials 会很酷!
谢谢大家
几个小步骤:
定义开始时间:(应该在您启动计时器的同时发生)
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)
}
我是 Swift 的初学者,我遇到了一个问题。
我想创建一个包含计时器和按钮的 class 每次点击按钮我都必须重新启动计时器,如果计时器启动和点击按钮之间经过的时间大于(或等于)400 毫秒,我必须调用选择器中的函数。
但是 swift 中没有 "GetTimeElapsed()" 方法,我不知道该怎么做。 如果你有一些 clue/tutorials 会很酷!
谢谢大家
几个小步骤:
定义开始时间:(应该在您启动计时器的同时发生)
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)
}