gpt4 book ai didi

ios - 当应用进入后台时暂停 NSTimer

转载 作者:行者123 更新时间:2023-11-29 01:12:22 25 4
gpt4 key购买 nike

我的 GameScene 中的 TouchesBegan 函数中有以下内容,以便计时器仅在用户触摸某个 Sprite 时启动:

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 时,计时器不会暂停并在应用程序处于后台时继续运行。我该如何让它停止?

最佳答案

这里有一些技巧可以用来解决你的问题

您可以在 AppDelegate 上使用 func applicationDidEnterBackground(_ application: UIApplication)func applicationWillResignActive(_ application: UIApplication)

通过初始化 rootViewController 示例访问您的 Controller :

让 vc = self.window?.rootViewController as? View Controller

然后您可以访问您的函数(确保函数处于公共(public)状态)

vc.pauseTimer()(根据您的情况自定义)

希望对你有帮助

关于ios - 当应用进入后台时暂停 NSTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35591660/

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