J'ai une vue où l'utilisateur doit faire une sélection avant qu'un bouton ne fonctionne. Pour que cela soit plus évident, je veux que l'élément qui représente la sélection qui doit être faite clignote si le bouton (grisé) est pressé en premier. C'est à dire. Je veux indiquer que c'est une erreur dans cet état et attirer l'attention de l'utilisateur sur l'élément d'interface utilisateur qu'ils doivent utiliser en premier.Erreur d'indication en faisant clignoter l'élément d'interface utilisateur
Ma tentative actuelle d'avoir l'élément (self.display
dans le code ci-dessous) clignote rapidement deux fois est la suivante:
@IBAction func inactiveButtonClick() {
let period = 0.16
UIView.animate(withDuration: period/2, delay: 0.0, options: [.curveEaseInOut, .autoreverse, .repeat], animations: {
self.display.alpha = 0
}, completion: { _ -> Void in
self.display.alpha = 1
})
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + period*2, execute: {
self.display.layer.removeAllAnimations()
})
}
Cela fonctionne assez bien, mais ne se sent pas à 100% à droite, et l'animation est parfois coupée des fractions de seconde avant qu'elle ne finisse. Je suppose que je pourrais mettre en file d'attente deux animations, mais je me demande s'il existe un moyen plus facile d'accomplir cela. Existe-t-il des moyens intégrés pour faire clignoter un élément de l'interface utilisateur pour indiquer une erreur? Si non, existe-t-il des combinaisons de «courbes» et de fréquences «connues» qui transmettent cette information à un utilisateur?