gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:49:23 24 4
gpt4 key购买 nike

我正在尝试创建一个计时器来倒计时 x 分钟和 y 秒。我正在计算秒数并像这样创建 InterfaceTimer:timer.setDate(NSDate(timeIntervalSinceNow:Double(secondsValue+1)))计时器停止()

在那之后我不停地停止它并一次又一次地启动它,但是随着“时间(现在)没有停止”,值突然减少了。例如:如果计时器显示 :55,我启动它 3 秒然后停止它,它显示 :52,我等待 10 秒然后再次启动它,它从 :42 开始。

我无法保存当前在 WKInterfaceTimer 中的值,以便我可以从同一点重新开始。我尝试的一切都不起作用。有没有人使用计时器并且在停止后它保持相同的值?

最佳答案

是的,watchkit 计时器有点……笨拙……而且绝对不是很直观。但这只是我的看法

每次用户选择恢复计时器时,您都必须继续设置日期/计时器。

请记住,您还需要一个内部 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
}

关于ios - WKInterfaceTimer 用作定时器开始和停止倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29749859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com