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.