🐛
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