0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SwiftUI - iOS14 sheet + fullScreen (multiple sheet)

Posted at

SwiftUI - iOS14 sheetとfullScreenを機能しないバグの対処法

内容

iOS14.4以下の場合、sheetを複数やsheet + fullScreen を設定すると正常に動作しない事例が発生するみたいです。

そのため、EmptyViewに対してfullScreenを設定し回避するも、iOS15以降の場合はEmptyViewに対して設定されたイベントが発火しないなどの問題があるようです。

他の記事を見ると、iOS14とiOS15で処理を分けて対処しているのが多いと思いますがコードの肥大化を避けるためにもっと簡潔にやりたい。。。

解決法

iOS15では、EmptyViewに対して設定されたイベントが機能しないなら、他のViewにしてしまえぇと言うことで、Spacer().frame(width:0, height:0)に設定することで機能することが確認できました。

iOS14.4以下で機能しないコード

Button(action: {
    isPresentedSheet.toggle()
}{
    Text("ボタン")
}.sheet(isPresented: $isPresentedSheet) {
    //処理
}
.fullScreenCover(isPresented: $isPresentedfullScreen) {
    //処理
}

機能するコード

Button(action: {
    isPresentedSheet.toggle()
}{
    Text("ボタン")
}.sheet(isPresented: $isPresentedSheet) {
    //処理
}

Spacer()
    .frame(width: 0, height: 0) 
    .fullScreenCover(isPresented: $isPresentedfullScreen) {
        //処理
    }

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?