【发布时间】:2022-05-10 03:25:31
【问题描述】:
我正在尝试执行一些我之前放在我的应用程序委托中的代码,例如在进入后台时保存我的托管对象上下文。我为场景阶段拨打了.onChange 的电话,但我什么也没得到。这是一个示例项目:
import SwiftUI
@main
struct PhaseApp: App {
@Environment(\.scenePhase) private var scenePhase
var body: some Scene {
WindowGroup {
Text("Hello, world.")
}
.onChange(of: scenePhase) { phase in
switch phase {
case .active:
print("Active")
case .background:
print("Background")
case .inactive:
print("Inactive")
@unknown default: break
}
}
}
}
我希望每当我按下 Home 或点击应用程序时,模拟器或我的测试设备上都会收到打印命令,但没有任何反应。
【问题讨论】:
-
@Asperi 的回答确实有效。但是场景扩展中的文档有一个在 WindowGroup 上调用 onChange 运算符的示例。所以,我认为这是一个错误。
-
在 iOS 14.7 中似乎仍然如此。 :(
-
Aswath 是对的,这是一个错误。如果您只需要了解各个场景的场景相位,@Asperi 的答案就有效。但是,如果您需要了解整个应用程序的场景相位,那么它是不正确的。
标签: swiftui