Bloquear sheet en SwiftUI
Libranner Santos
01 febrero, 20231min de lectura
Para evitar que un usuario pueda cerrar un sheet haciendo swipe o tap fuera del mismo, debes usar el modificador interactiveDismissDisabled(_:)
.
struct MyView: View {@State private var isPresenting = falsevar body: some View {Button("Presentar Sheet") {isPresenting = true}.sheet(isPresented: $isPresenting) {Text("Este es mi sheet").interactiveDismissDisabled(true)}}}
Dentro del sheet le agregamos el modificador interactiveDismissDisabled
con el valor true
. Solo con esto ya el sheet no podrá ser cerrado. Si intentamos cerrar el sheet haciendo swipe hacia abajo, tendremos este resultado:
Prueba el código eliminando la línea con el modificador interactiveDismissDisabled(_:)
, el sheet podrá ser cerrado usando swipe.
Otras cosas a tomar en cuenta:
- En caso de tener múltiples vistas dentro del sheet puedes aplicar
interactiveDismissDisabled(_:)
a cualquiera de ellas. - Puedes pasar directamente el valor
true
ofalse
ainteractiveDismissDisabled(_:)
, si quieres que tenga un valor estático. Sin embargo, también podrías usar un binding para cambiar el valor dinámicamente. - El modificador
interactiveDismissDisabled(_:)
solo está disponible a partir de iOS 15.