应用程序中的调用函数didbecomeactive - Swift 2.0

Posted

技术标签:

【中文标题】应用程序中的调用函数didbecomeactive - Swift 2.0【英文标题】:Call function in applicationdidbecomeactive - Swift 2.0 【发布时间】:2016-08-23 18:16:29 【问题描述】:

所以,我的 GameScene.swift 文件中有一个函数,我想在每次游戏激活时调用它。目前我在我的 GameScene.swift 文件中的 didMoveToView 中运行此功能,但它仅在应用程序完全关闭后启动时运行,我希望每次游戏激活时都执行此操作。 (用户点击主页按钮,然后重新打开应用程序)

我假设在 AppDelegate.swift 文件中的 applicationdidbecomeactive 中运行 func 会起作用,但我不确定如何执行此操作或是否真的可行。任何帮助,将不胜感激。

【问题讨论】:

提一下这个函数可能会有所帮助该应用程序变得活跃我全神贯注。谢谢! 【参考方案1】:

您可以在 GameScene.swift 中为 UIApplicationDidBecomeActiveNotification 添加观察者并调用您的函数。例如

NSNotificationCenter.defaultCenter().addObserver(self, 
selector: #selector(GameScene.yourfunction,
name:UIApplicationDidBecomeActiveNotification, object: nil)

【讨论】:

#selector 现在是编写选择器的合适方式。 做到了!谢谢! SWIFT 3 更新:NotificationCenter.default.addObserver(self, selector: #selector(ViewController.checkBundleSettings(notification:)), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil),方法为:func checkBundleSettings(notification: Notification)...your method【参考方案2】:

在这种情况下,在 AppDelegate 中的 applicationdidbecomeactive 中发布 NSNotification。

let nc = NSNotificationCenter.defaultCenter()
nc.postNotificationName("didBecomeActive", object: nil)

然后,将监听器附加到您的 GameScene.swift 文件。

let nc = NSNotificationCenter.defaultCenter()
nc.addObserver(self, selector: "didBecomeActive", name: "didBecomeActive", object: nil)

最后,实现选择器“didBecomeActive”

func didBecomeActive(notification:NSNotification) 
    //Call your function here 
    //

【讨论】:

【参考方案3】:

这是基于@firstinq 答案的SWIFT 5更新

NotificationCenter.default.addObserver(self, selector: #selector(MainViewController.appDidBecomeActive), name:UIApplication.didBecomeActiveNotification, object: nil)

【讨论】:

以上是关于应用程序中的调用函数didbecomeactive - Swift 2.0的主要内容,如果未能解决你的问题,请参考以下文章

在应用程序DidBecomeActive 之后立即调用iOS 应用程序DidEnterBackground 时?

强制 App 导航到 App DidBecomeActive 中的特定视图

SpriteKit - didBecomeActive 时不显示暂停屏幕

Spritekit - 在 didBecomeActive 时保持游戏暂停

UISceneDelegate 和 UIApplicationDelegate 的“didBecomeActive”和“willResignActive”方法对之间的区别?

appDidBecomeActive 中可达性的错误状态