WKInterfaceTimer utilizado como timer para iniciar y detener la count atrás.

Estoy tratando de crear un timer para contar atrás x minutos y y segundos. Estoy calculando la cantidad de segundos y creando el InterfaceTimer así: timer.setDate (NSDate (timeInterSinceSinceNow: Double (secondsValue + 1))) timer.stop ()

después de eso sigo deteniéndolo e iniciándolo una y otra vez, pero los valores disminuyen súbitamente a medida que "el time (ahora) no se detiene". Por ejemplo: si el timer muestra: 55, lo inicio durante 3 segundos y lo detiene, muestra: 52, espero 10 segundos y luego lo comienzo de nuevo, comienza desde: 42.

No puedo save el valor actualmente en el WKInterfaceTimer, para poder comenzar de nuevo desde el mismo punto. Todo lo que probé no funciona. ¿Alguien trabajó con el timer y se quedó en el mismo valor después de detenerlo?

Sí, el reloj timer es un poco … incómodo … y definitivamente no es muy intuitivo. Pero esa es solo mi opinión

Tendrá que seguir configurando la date / el timer cada vez que el usuario elija reanudar el timer.

Recuerde, también necesitará un NSTimer interno para realizar un seguimiento de las cosas, ya que el timer WatchKit actual es simplemente para mostrar sin tener una lógica real asociada a él.

Entonces tal vez algo así … No es elegante. Pero funciona

@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 }