WKInterfaceTimer用作倒计时开始和停止的定时器

我正在尝试创build一个倒计时x分钟和y秒的计时器。 我计算秒数和创buildInterfaceTimer像这样:timer.setDate(NSDate(timeIntervalSinceNow:Double(secondsValue + 1)))timer.stop()

之后,我一直停下来,一次又一次地开始,但价值突然下降,因为“时间(现在)不停止”。 例如:如果计时器显示:55,我开始它3秒,并停止它,它显示:52,我等待10秒,然后再次启动,它从42开始。

我无法保存当前在WKInterfaceTimer中的值,所以我可以从同一点重新开始。 我所尝试的一切都不起作用。 有没有人与计时器工作,并停留在它停留在同样的价值?

是的watchkit计时器是有点…尴尬…绝对不是很直观。 但那只是我的个人意见

每次用户select恢复定时器时,都必须设置date/定时器。

请记住,您还需要一个内部的NSTimer来跟踪事物,因为当前的WatchKit计时器只是用于显示而没有附加任何实际的逻辑。

所以也许这样…这不是优雅的。 但它的作品

@IBOutlet weak var WKTimer: WKInterfaceTimer! //watchkit timer that the user will see var myTimer : NSTimer? //internal timer to keep track var isPaused = false //flag to determine if it is paused or not var elapsedTime : NSTimeInterval = 0.0 //time that has passed between pause/resume var startTime = NSDate() var duration : NSTimeInterval = 45.0 //arbitrary number. 45 seconds override func willActivate(){ super.willActivate() myTimer = NSTimer.scheduledTimerWithTimeInterval(duration, target: self, selector: Selector("timerDone"), userInfo: nil, repeats: false) WKTimer.setDate(NSDate(timeIntervalSinceNow: duration )) WKTimer.start() } @IBAction func pauseResumePressed() { //timer is paused. so unpause it and resume countdown if isPaused{ isPaused = false myTimer = NSTimer.scheduledTimerWithTimeInterval(duration - elapsedTime, target: self, selector: Selector("timerDone"), userInfo: nil, repeats: false) WKTimer.setDate(NSDate(timeIntervalSinceNow: duration - elapsedTime)) WKTimer.start() startTime = NSDate() pauseResumeButton.setTitle("Pause") } //pause the timer else{ isPaused = true //get how much time has passed before they paused it let paused = NSDate() elapsedTime += paused.timeIntervalSinceDate(startTime) //stop watchkit timer on the screen WKTimer.stop() //stop the ticking of the internal timer myTimer!.invalidate() //do whatever UI changes you need to pauseResumeButton.setTitle("Resume") } } func timerDone(){ //timer done counting down }