scenePhase更改在SwiftUI中是意外的

pgvzfuti  于 2023-06-04  发布在  Swift
关注(0)|答案(1)|浏览(730)

我在swiftUI中遇到了一个非常意外的.scenePhase行为。我已经尝试了这些解决方案,但它仍然显示问题scenePhase changing unexpectedlyNot Receiving scenePhase Changes。下面是我使用的简单代码。

struct TestView: View {
    
    @Environment(\.scenePhase) var scenePhase
    
    var body: some View {
        
        VStack {
            Text("BackGround Changes tester")
            
        }  .onChange(of: scenePhase) { newPhase in
            switch newPhase {
                
            case .background:
                debugPrint("appMoveToBackground")
            case .inactive:
                debugPrint("appMoveToInactive")
            case .active:
                debugPrint("appMovedToForground")
            @unknown default:
                debugPrint("scenePhase: @unknown default for ")
            }
        }
    }
}

这就是我使用的代码。有时它运行.background case,有时不运行。这里是控制台输出,您可以看到它没有运行后台案例,这是非常意外的。



我正在使用Xcode 14.3,Mac OS Ventura 13.3.1,并在iPhone 13 Pro Max上进行测试。

ldioqlga

ldioqlga1#

试试看

.task(id: scenePhase) { 
        switch scenePhase {
            
        case .background:
            debugPrint("appMoveToBackground")
        case .inactive:
            debugPrint("appMoveToInactive")
        case .active:
            debugPrint("appMoveToActive")
        @unknown default:
            debugPrint("scenePhase: @unknown default for ")
        }
        
    }

.task更可靠。

相关问题