J'ai rencontré un problème où mon bouton doit rester "enfoncé" pendant qu'il affiche un popover appelé depuis celui-ci. Popover est un sélecteur pour certains filtres et le filtre est affiché sur le bouton lui-même. Lorsque j'appuie dessus et qu'il s'affiche, il est désélectionné quoi qu'il arrive.
Je pense que je dois redéfinir son comportement lors d'un événement tactile et le faire réagir non pas au standart touch up inside
. Alors je me suis demandé de quoi d'autres événements étaient-ils responsables? Mais je n'ai pas pu trouver la liste des événements dans la bibliothèque iOS et dans StackOverflow ne sont que des questions sur le comportement incorrect de touch up inside
ou touch down
.
Alors, quelle est la différence entre les événements tactiles?
d'autres IBActions ne sont pas envoyées par UIButton, non? Aussi comment ces événements changent-ils l'apparence d'UIButton? Comme highlighted
ou selected
?
J'apprécierais un lien sur un bon article sur IBActions, car je ne l'ai pas trouvé.
De doc d'Apple pour UIControlEvents
:
UIControlEventTouchCancel
Un événement système annulant les contacts actuels pour le contrôle.
UIControlEventTouchDown
Un événement de toucher des roues dans le contrôle.
UIControlEventTouchDownRepeat
Un événement de toucher du sol répété dans le contrôle; pour cet événement, la valeur de la méthode tapCount UITouch est supérieure à un.
UIControlEventTouchDragEnter
Un événement où un doigt est glissé dans les limites du contrôle.
UIControlEventTouchDragExit
Un événement où un doigt est déplacé de l'intérieur d'un contrôle vers l'extérieur de ses limites.
UIControlEventTouchDragInside
Un événement où un doigt est glissé à l'intérieur des limites du contrôle.
UIControlEventTouchDragOutside
Un événement où un doigt est glissé juste en dehors des limites du contrôle.
UIControlEventTouchUpInside
Un événement de retouche dans le contrôle où le doigt est à l'intérieur des limites du contrôle.
UIControlEventTouchUpOutside
Un événement de retouche dans le contrôle où le doigt est en dehors des limites du contrôle.
Énuméré, ce que je considérerais, ordre d'utilisation courante/probabilité d'occurrence pour un bouton normal:
UIControlEventTouchDown : l'utilisateur a appuyé sur le bouton. Cela se déclenche sur le doigt/stylet en contact.
UIControlEventTouchUpInside : l'utilisateur a appuyé sur le bouton. Cela se déclenche sur le contact doigt/stylet éloigné de l'écran.
Utile pour les curseurs et les événements de glisser comme le déplacement d'un composant. Les éléments ci-dessous sont par ordre d'occurrence:
UIControlEventTouchDragInside : déclenché lorsque le doigt glisse dans la zone des boutons.
UIControlEventTouchDragExit : déclenché pendant un mouvement de glissement. Il n'est appelé qu'une seule fois, car le doigt/stylet de l'utilisateur quitte les limites du bouton.
UIControlEventTouchDragOutside : déclenché pendant un mouvement de glissement, après 'UIControlEventTouchDragExit' et est appelé en continu , tant que la touche d'origine continue.
UIControlEventTouchUpOutside : il s'agit simplement du doigt/stylet levé MAIS uniquement si le doigt/stylet n'est plus dans les limites du bouton. La chose importante (et probablement évidemment) à appeler est que le contact devait avoir été à l'intérieur du bouton à un moment donné pour associer cet événement au bouton.
Remarque: Je crois comprendre que ce qui précède peut être utile pour:
D'autres évènements:
UIControlEventTouchCancel : quelque chose hors du contrôle de l'utilisateur annule son action tactile. Considérez cela comme quelque chose qui "va mal" du côté des téléphones.
UIControlEventTouchDownRepeat : Vous voulez détecter quand votre utilisateur est fou et en tapant furieusement sur un bouton? Vous voulez détecter s'ils sont toujours en mode Windows et essayez de "double-cliquer"? Ou peut-être avez-vous conçu un bouton pour faire quelque chose de différent s'il tape deux fois. Cet événement aide à tout cela!
Les références:
SO 1 : Dif entre UIControlEventTouchDragOutside et UIControlEventTouchDragExit
SO 2 : Qu'est-ce que UIControlEventTouchCancel?