[英]Pause NSTimer when app goes to background
我在GameScene的touchesBegan函数中具有以下内容,因此计时器仅在用户触摸某个精灵时启动:
let start = SKAction.runBlock({
NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "printDuration:", userInfo: NSDate(), repeats: true)
})
tapToStartNode.runAction(start)
和以下功能:
func printDuration(timer: NSTimer) {
if self.view?.paused == false {
guard let userInfo = timer.userInfo else {
return
}
guard let startDate = userInfo as? NSDate else {
return
}
let duration = NSDate().timeIntervalSinceDate(startDate)
currentTime = NSDate().timeIntervalSinceDate(startDate)
currentTimeValueLabel.text = "\(NSString(format:"%3.2f", duration))"
}
}
但是,当applicationDidEnterBackground或applicationWillResignActive时,计时器不会暂停,并在应用程序位于backgorund中时继续运行。 我如何使其停止?
这里有个技巧可以解决您的问题
您可以在AppDelegate
上使用func applicationDidEnterBackground(_ application: UIApplication)
或func applicationWillResignActive(_ application: UIApplication)
通过初始化rootViewController
示例访问控制器:
let vc = self.window?.rootViewController as? ViewController
然后,您可以访问您的函数(确保函数处于公共状态)
vc.pauseTimer()
(根据您的情况自定义)
希望对您有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.