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

问题描述 投票:0回答:1

我的主要任务是使屏幕与非透明视图重叠,以在应用程序进入背景时隐藏信息。官方解决方案描述为here

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

我找到了这个article

它解释了sceneDidBecomeActive(_:)sceneWillResignActive(_:)的工作方式。但是新项目有AppDelegate + SceneDelegate,旧项目只有AppDelegate。我可以只使用applicationDidBecomeActive(_:)applicationWillResignActive(_:)吗?还是我应该以某种方式迁移项目以使用UISceneDelegate(iOS 12和更早版本不支持此功能)?

swift appdelegate ios13 xcode11 uiscenedelegate
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方法集。当您的应用程序在装有iOS 12或更低版本的设备上运行时,将调用UIApplicationDelegate方法;而当您的应用程序在装有iOS 13或更高版本的设备上运行时,将调用UISceneDelegate/UIWindowSceneDelegate方法。

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

© www.soinside.com 2019 - 2024. All rights reserved.