Dans une application SwiftUI, il est intéressant de générer une rétroaction physique (haptic feedback) telle une vibration.
Fait intéressant : si vous travaillez avec le modifieur .sensoryFeedback(), le système se chargera d'ignorer la vibration si l'appareil mobile ne supporte pas cette fonctionnalité.
Notez que certaines vibrations requièrent que les vibrations système soient activées sur le téléphone : / / .
C'est pourquoi la vibration ne doit pas être la seule source de rétroaction à l'usager. Elle doit être complémentaire à une modification du visuel, par exemple l'affichage d'un message, un changement de couleur, etc.
Il existe différents types de vibration à utiliser dans un contexte précis.
Il faut respecter autant que possible les standards afin de ne pas « dénaturer » la signification de la vibration.
L'application peut utiliser une vibration standard pour signifier, par exemple, une réussite, un avertissement ou un échec.
L'utilisation de SensoryFeedback rend l'ajout de vibration très simple. Ce modifieur prend deux paramètres :
La vibration se produira dès que la valeur du déclencheur change.
Dans cet exemple, il y aura une vibration d'avertissement dès que la variable vibrationAvertissement change de valeur.
struct ContentView: View {
@State private var vibrationAvertissement: Bool = false
var body: some View {
VStack {
...
Button(action: {
...
if ... {
vibrationAvertissement.toggle() // ceci déclenchera la vibration
}
}) {
Text("Faire quelque chose")
}
}
.sensoryFeedback(.warning, trigger: vibrationAvertissement)
}
}
Voici un exemple qui émet une vibration de succès ou d'échec selon le cas. Remarquez la différence de syntaxe pour qu'un seul modifieur émette un type de vibration différent selon le contexte.
struct ContentView: View {
@State private var succes: Bool = false
@State private var declencheur: Int = 0
var body: some View {
VStack {
Button(action: {
succes = true
declencheur += 1 // la valeur du déclencheur doit être modifiée pour lancer la vibration
}) {
Text("Succès")
}
Button(action: {
succes = false
declencheur += 1
}) {
Text("Succès")
}
}
.sensoryFeedback(trigger: declencheur) { _, _ in
succes ? .success : .error
}
}
}
▼Publicité