objective-c - Mac Catalyst 应用程序如何处理生命周期转换?

标签 objective-c swift xcode macos mac-catalyst

这只是我的应用程序,还是所有使用 Catalyst 制作的 Mac 应用程序除了启动或退出时之外都不会经历生命周期更改?

启动后,将调用 UIWindowSceneDelegate 方法 sceneWillEnterForeground:sceneDidBecomeActive:。退出时调用 sceneWillResignActivesceneDidEnterBackground

但是,当应用程序保持打开状态并且我更改为新应用程序,或者让我的计算机休眠,或者执行其他我希望强制应用程序进入后台状态的正常人类使用模式时,这些永远不会发生。我的印象是,只要用户不退出该应用程序就永远不会离开前台状态。这是正确的吗?

如果我实现对自动或突然终止的支持(如 here 所示),应用程序是否会更频繁地进入/退出应用程序状态?

我是不是有什么误解?

感谢您的帮助。

(注意:我构建了一个记录应用程序转换的系统,而不是“场景”转换,以便能够在 Xcode 中运行应用程序的情况下进行测试。)

最佳答案

就我而言,解决方法有所帮助:

#if targetEnvironment(macCatalyst)
   nc.addObserver(self, selector: #selector(hold), name: NSNotification.Name("NSApplicationDidResignActiveNotification"),object: nil)
   nc.addObserver(self, selector: #selector(resume), name: NSNotification.Name("NSApplicationDidBecomeActiveNotification"),object: nil)
#endif

希望将来有一个使用 UIScene 的更优雅的选项。

关于objective-c - Mac Catalyst 应用程序如何处理生命周期转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59958419/

相关文章:

ios - 不断收到无法分配的错误

ios - 为什么我的 iOS 应用程序不禁用深色模式?

ios - 将 IBDesignable 中的操作 UIButton 转发给父 Controller

ios - 当我将它放在弹出窗口中时,我没有与视频播放器进行交互

Objective-C 类扩展

ios - 在 iOS 上编码为数据的 Int 数字在 macOS 上解码后为 nil

ios - 使用扩展创建 socket 在 UITableViewCell 中表现得很奇怪

objective-c - 实现按住连续事件触发的优雅方式?

iphone - 没有从网络服务获取数据

ios - 为什么不能在 Swift 中为 @IBOutlet 分配 let 而不是 var?