모달 화면을 드래그해서 닫는 방식을 Interactive dismiss
라고 한다.
입력을 받는 Modal Sheet에서 입력이 있을 때 dismiss되서는 안된다.
@State private var edited = false
.sheet(isPresented: $showComposer, onDismiss: nil) {
ComposeScene(edited: $edited)
.interactiveDissmissDisabled(edited)
}
//modal로 표시되는 뷰
struct ComposeScene: View {
@Binding var edited: Bool
...
var body: some View {
...
TextField("Title", text: $title)
.onChange(of: title) {
edited = title != "" || content != ""
}
}
}
dismiss시 경고창을 표시하고자 한다면 hosting
을 공부해야 함