我创建了一个4:00分钟的倒数计时器,当它到达0:00时会有声音信号。我使用的功能可以防止手机在定时器运行时入睡。但是,这是我的应用程序的最后一个屏幕。所以一旦acoustig最终信号结束,我希望应用程序慢慢关闭。我不知道在哪里放置代码。
这是我用来防止它入睡的代码:
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.sharedApplication().idleTimerDisabled = true
}
所以我想我可以用
UIApplication.sharedApplication().idleTimerDisabled = false
扭转它。当我将它放在stopTimer函数中时,它会在0:00立即关闭。
func stopTimer() {
if count == 0 {
timer.invalidate()
timerRunning = false
playSound()
timerLabel.text = "DONE"
}
}
也许有一种方法可以延迟这个过程,以便在15秒后关闭。我该怎么做?
答案 0 :(得分:2)
正如我在评论和linked answer中所写,您可以使用dispatch_after
:
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(15 * Double(NSEC_PER_SEC))) // the 15 indicates the seconds to wait
dispatch_after(delayTime, dispatch_get_main_queue()) {
UIApplication.sharedApplication().idleTimerDisabled = false
}
答案 1 :(得分:0)
应用不应自行终止。如果您这样做,应用程序商店将拒绝您。一旦计时器完成,只需将idleTimerDisabled设置为false即可。然后,系统将根据用户的设置和当前活动在将来的某个时间点进入睡眠状态。 (只要用户与其设备进行交互,就不会启动不活动睡眠定时器。)