47 votes

Vérifiez si l'utilisateur a fini de glisser sur un UISlider continu?

Dans mon application, j'ai un couple de UISlider instances de modifier les différentes valeurs. Les valeurs sont affichées à droite à côté de la barre, ainsi que le rendu dans un espace 3d dans une autre partie visible de l'application.

La 3d partie comprend certains sont assez lourds calculs, et pour l'instant il ne semble pas possible de le mettre à jour en direct à mesure que le curseur change. Cela impliquerait que je serais obligé de positionner le curseur de la continuous de la propriété d' NO, donc seulement obtenir des mises à jour lorsque le curseur a fini de changer.

Je préfère avoir l' affiche de la valeur de mise à jour en direct, cependant. Est-il possible d'avoir un curseur qui est continue (donc je peux mettre à jour ma valeur-étiquette en temps réel) et envoie toujours une sorte de message une fois que l'utilisateur a fini d'interagir avec elle? Mon sentiment profond est le droit maintenant de la sous-classe UISlider et remplacer l' touchesEnded: méthode. Est-ce raisonnable?

76voto

Jasarien Points 35353

Vous pouvez le faire avec des cibles / actions simples.

Définissez une cible et une action pour l'événement UIControlEventValueChanged , puis une autre cible et une action pour l'événement UIControlEventTouchUpInside . Avec la propriété continuous définie sur YES , l'événement de valeur modifiée se déclenche lorsque le curseur change de valeur, tandis que l'événement de retouche à l'intérieur ne se déclenche que lorsque l'utilisateur relâche le contrôle.

17voto

Stephen J Points 1002

Je devais juste le faire, j'ai donc recherché les propriétés tactiles et utilisé l'en-tête IBAction complet.

Cela devrait être une alternative viable pour les personnes qui veulent un contrôle supplémentaire, bien que Jas soit certainement plus facile du côté du code.

 - (IBAction)itemSlider:(UISlider *)itemSlider withEvent:(UIEvent*)e;
{
    UITouch * touch = [e.allTouches anyObject];

    if( touch.phase != UITouchPhaseMoved && touch.phase != UITouchPhaseBegan)
    {
       //The user hasn't ended using the slider yet.
    }

}
 

:RÉ

16voto

Agustin Points 255

Notez également que vous devez également connecter l'événement UIControlEventTouchUpOutside au cas où l'utilisateur fait glisser son doigt hors du contrôle avant de le soulever.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X