我的倒计时器有一个奇怪的问题。当我的开始按钮被击中时它会正常触发,并在我关闭应用程序并重新启动它时正确地重新实例化。但是,当我选择一个不同的标签并在那里停留一段时间时,它会停止倒计时,然后当我再次显示倒计时标签时,从它停止的位置开始倒计时。
例如,如果计时器现在处于00:28:00
(格式为HH:MM:SS),请选择其他选项卡,在那里停留5分钟,然后返回计时器选项卡,它仅在27:52
标记。当我关闭应用程序时(双击主页按钮,向上滑动我的应用程序)并重新打开它,它会以更合理的22:50
标记开始。
我已经发布了课程中的相关代码,以显示我如何设置计时器,但总结了它的作用:
recalculate()
。recalculate()
触发CalculateOperation
。CalculateOperation
根据新记录的添加/删除计算起始HH:MM:ss。 successBlock
的{{1}}在主线程中执行。CalculateOperation
,则CalculateOperation
会在NSTimer
中创建successBlock
。countdownTimer
每1秒执行一次NSTimer
。它会通过调用decayCalculation()
将calculation.timer
缩短1秒。代码:
tick()
答案 0 :(得分:1)
好吧,如果我将应用程序留在其他选项卡中而不是触摸手机一段时间,它最终会进入睡眠状态,应用程序将重新启动,并进入后台,这会停止计时器。
解决方法是将我的视图控制器设置为UIApplicationWillEnterForegroundNotification
的监听器,并调用recalculate
来更正我的计时器的倒计时值。