🐛
iOS16以下のSwiftUI SheetでのScenePhaseのonChangeの不具合とそのWorkaround
SwiftUIのライフサイクルでアプリのフォアグラウンドやバックグラウンドを検知する際、通常はScenePhaseを使う。 しかし、iOS16以下でSheet内で ScenePhase を用いるとき、onChange が正しく発火しない問題がある。そのworkaroundを紹介する。
bugの再現動画

workaround
Sheetを呼び出す側で、.environment(.scenePhase, scenePhase) を使う。
.sheet(isPresented: $isPresented) {
SheetView()
.environment(\.scenePhase, scenePhase)
}

Discussion