SwiftUI:onChange(of:scenePhase)没有触发

Posted

技术标签:

【中文标题】SwiftUI:onChange(of:scenePhase)没有触发【英文标题】:SwiftUI : onChange(of: scenePhase) is not firing 【发布时间】:2021-10-18 08:57:24 【问题描述】:

我正在使用 SwiftUI 开发一个项目,但在接收应用程序进入前台和后台等事件时遇到问题。这些事件根本没有触发。请参考下面的代码。

import SwiftUI

@main
struct testApp: App 
    
    @Environment(\.scenePhase) private var scenePhase
    
    var body: some Scene 
        WindowGroup 
            ContentView()
                .onChange(of: scenePhase)  phase in
                    if phase == .background 
                        print("background")
                    
                    if phase == .active 
                        print("active")
                    
                    if phase == .inactive 
                        print("inactive")
                    
                    
                
        
    


import SwiftUI

struct ContentView: View 
    var body: some View 
        Text("Hello, world!").padding()
    

Xcode 版本为 12.5,在 ios 14.0 - 14.5 模拟器上运行。我在 iOS 15 上试过,效果很好。这是 iOS 14 中的某种错误吗?

我对开发 iPhone 应用程序非常陌生。任何帮助将不胜感激。

【问题讨论】:

这是否回答了您的问题***.com/a/62840614/12299030? 感谢您的评论!我尝试了几乎所有可以在 Stack Overflow 上找到的解决方案,包括您刚刚发布的链接,但仍然没有运气......整天都在这个问题上...... 【参考方案1】:

您可以将 .onReceive() 与您需要的通知发布者一起使用。

【讨论】:

以上是关于SwiftUI:onChange(of:scenePhase)没有触发的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 无法添加 onChange 事件

SwiftUI 2 .onChange() 中的选取器不会更改 UINavigationBar.appearance()

SwiftUI 工作表中未触发深层链接 onChange

如何使用 ipad Playground 在 swiftUI 上运行 Scene 和 App 以实现 swift

在 SwiftUI 视图中结合 onChange 和 onAppear 事件?

Behind the scenes of the C# yield keyword(转)