Bloquear sheet en SwiftUI

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 = false
var 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:

Gif de un sheet bloqueado. Si hacemos swipe el sheet no se cierra.

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 o false a interactiveDismissDisabled(_:), 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.

Comparte este artículo

Subscríbete a nuestro Newsletter

Mantente al día en el mundo de las aplicaciones móviles con nuestro blog especializado.

Artículos semanales

Todas las semanas artículos nuevos sobre el mundo de las aplicaciones móviles.

No spam

No te enviaremos spam, solo contenido de calidad. Puedes darte de baja cuando quieras.

Contenido de calidad

Nada de contenido generado de manera automática usando ChatGPT.

Recomendaciones

Tips indispensables sobre mejores prácticas y metodologías.

© 2024 AsyncLearn