Respuesta háptica en SwiftUI con sensoryFeedback
Arturo Rivas Arias
La respuesta háptica se ha convertido en una parte fundamental de la experiencia de usuario en los dispositivos de Apple. Una ligera vibración puede confirmar una acción, advertir de un error o reforzar una interacción sin necesidad de mostrar información adicional en pantalla.
Hasta hace relativamente poco, integrar este tipo de comportamiento en una aplicación SwiftUI implicaba recurrir a UIKit y utilizar clases como UIImpactFeedbackGenerator o UINotificationFeedbackGenerator. Afortunadamente, SwiftUI incorpora una API mucho más sencilla y declarativa: sensoryFeedback.
¿Qué es sensoryFeedback?
sensoryFeedback es un modificador de SwiftUI que permite generar distintos tipos de respuesta sensorial cuando cambia un valor observado.
struct DownloadView: View {
@State private var finished = false
var body: some View {
Button("Finalizar descarga") {
finished.toggle()
}
.sensoryFeedback(.success, trigger: finished)
}
}
Tipos de respuesta disponibles
Entre los más habituales encontramos:
.success.warning.error.selection.increase.decrease.impact.start.stop
Ejecutar el feedback solo cuando sea necesario
struct RegisterView: View {
@State private var username = ""
var isValid: Bool {
username.count >= 6
}
var body: some View {
TextField("Usuario", text: $username)
.sensoryFeedback(trigger: isValid) { _, newValue in
newValue ? .success : nil
}
}
}
Seleccionar el tipo de respuesta dinámicamente
enum StockState {
case available, low, empty
}
SwiftUI adapta automáticamente el comportamiento al hardware disponible, por lo que no suele ser necesario comprobar si el dispositivo dispone de Taptic Engine.
Buenas prácticas
- Utiliza la respuesta háptica únicamente en acciones relevantes.
- Evita abusar de las vibraciones.
- Escoge el tipo de feedback que mejor represente la acción.
- Considera la respuesta háptica como un complemento de la interfaz visual.
Conclusión
sensoryFeedback simplifica enormemente la incorporación de respuesta háptica en SwiftUI gracias a una API declarativa, limpia y fácil de mantener. Con unas pocas líneas de código es posible mejorar la experiencia de usuario y hacer que las interacciones resulten mucho más naturales.