0

我的主要任务是在应用程序进入后台时将屏幕与非透明视图重叠以隐藏信息。官方解决方案在此处描述。

问题是它有时在 iOS 13 上不起作用。

我找到了这篇文章

它解释了如何sceneDidBecomeActive(_:)sceneWillResignActive(_:)工作。但是新项目有AppDelegate+ SceneDelegate,旧项目AppDelegate只有。我可以使用applicationDidBecomeActive(_:)andapplicationWillResignActive(_:)吗?或者我应该以某种方式迁移项目以使用UISceneDelegate(iOS 12 及更早版本不支持)?

4

1 回答 1

0

如果您有一个在 Xcode 11 之前创建的应用程序,那么它不支持场景。只要您不添加与场景相关的任何内容(Apple 将来可能会不允许这样做),那么您的应用程序的生命周期将继续在 iOS 13 下运行,就像在 iOS 12 及更早版本下一样。只需继续使用 UIApplicationDelegate 方法即可。


如果您有一个支持 iOS 12 和 iOS 13 的应用,并且您使用的是 iOS 13 中的场景,那么您必须同时实现applicationWillResignActive(支持 iOS 12 及更早版本)和sceneWillResignActive(支持 iOS 13 及更高版本)。

事实上,在一个同时支持 iOS 12 和 13 的应用中,你基本上需要实现这两个集合UIApplicationDelegateUISceneDelegate/UIWindowSceneDelegate方法。UIApplicationDelegate当您的应用在 iOS 12 或更早版本的设备上运行时,将调用 的方法,UISceneDelegate/UIWindowSceneDelegate当您的应用在 iOS 13 或更高版本的设备上运行时,将调用这些方法。

请记住,在 iOS 13 下,如果您支持多个窗口/场景,则场景委托方法与特定场景相关联。

于 2019-11-11T16:18:35.883 回答