swift - UISceneDelegate 和 UIApplicationDelegate 的“didBecomeActive”和“willResignActive”方法对之间的区别?
问题描述
我的主要任务是在应用程序进入后台时将屏幕与非透明视图重叠以隐藏信息。官方解决方案在此处描述。
问题是它有时在 iOS 13 上不起作用。
我找到了这篇文章:
它解释了如何sceneDidBecomeActive(_:)
和sceneWillResignActive(_:)
工作。但是新项目有AppDelegate
+ SceneDelegate
,旧项目AppDelegate
只有。我可以使用applicationDidBecomeActive(_:)
andapplicationWillResignActive(_:)
吗?或者我应该以某种方式迁移项目以使用UISceneDelegate
(iOS 12 及更早版本不支持)?
解决方案
如果您有一个在 Xcode 11 之前创建的应用程序,那么它不支持场景。只要您不添加与场景相关的任何内容(Apple 将来可能会不允许这样做),那么您的应用程序的生命周期将继续在 iOS 13 下运行,就像在 iOS 12 及更早版本下一样。只需继续使用 UIApplicationDelegate 方法即可。
如果您有一个支持 iOS 12 和 iOS 13 的应用,并且您使用的是 iOS 13 中的场景,那么您必须同时实现applicationWillResignActive
(支持 iOS 12 及更早版本)和sceneWillResignActive
(支持 iOS 13 及更高版本)。
事实上,在一个同时支持 iOS 12 和 13 的应用中,你基本上需要实现这两个集合UIApplicationDelegate
和UISceneDelegate/UIWindowSceneDelegate
方法。UIApplicationDelegate
当您的应用在 iOS 12 或更早版本的设备上运行时,将调用 的方法,UISceneDelegate/UIWindowSceneDelegate
当您的应用在 iOS 13 或更高版本的设备上运行时,将调用这些方法。
请记住,在 iOS 13 下,如果您支持多个窗口/场景,则场景委托方法与特定场景相关联。
推荐阅读
- r - 识别属于纬度和经度坐标的邮政编码
- node.js - 媒体播放器在 Google 助理上播放良好,而模拟器则不行
- python - 基于匹配Python中的第一列合并数据
- android - Android - Camera 2 API - 不会拍照
- javascript - React TypeError:_this2.props.variations.find 不是函数
- java - 为什么这条线要打印两次?
- java - 构建失败并显示“程序类型已存在:android.arch.core.util.Function” - Firebase 依赖项问题
- hyperledger-fabric - Hyperledger composer 教程在部署贸易网络时出现错误 500
- c - 在我的结构中访问我的图形时,它会打印一个空行
- python - 将商品添加到购物车时,我应该将 WTForms 用于按钮吗?