Question

Dans mon projet, j'ai besoin d'utiliser un UIButton (ou un autre composant) pour gérer les événements en appuyant longuement. Permettez-moi de vous expliquer, je devrais penser que je maintiens le bouton une minuterie pour compter les secondes et relâchez pour arrêter la pression, j'ai essayé avec la gestion de UILongPressGestureRecognizer mais ce n'est pas le cas car je me souviens de l'événement lorsque le bouton est maintenu enfoncé maisseulement si je bouge mon doigt, mais je souhaite que la minuterie disparaisse et compte tout le temps pendant lequel le bouton est maintenu enfoncé (avec votre doigt immobile) et a cessé de compter lorsque le doigt est relâché.

Quelqu'un sait-il comment m'aider? Merci

Était-ce utile?

La solution

Utilisez ces deux méthodes pour les événements de boutons.touchDown est appelé lorsque vous appuyez sur le bouton et touchUp est appelé lorsque vous soulevez votre doigt du bouton.Calculez la différence de temps entre ces deux méthodes.Vous pouvez également démarrer le minuteur dans touchDown et l'arrêter / le redémarrer dans touchUp.

//connect this action with Touch up inside
- (IBAction)touchUp:(id)sender {
    NSLog(@"up");
}

//connect this to tocuh down
- (IBAction)touchDown:(id)sender{
    NSLog(@"down");
}

Mis à jour En codant, vous pouvez écrire comme ça

[btn addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];

et dans xib entrez la description de l

Autres conseils

La même chose que j'ai fait ... Comme vous l'avez dit à propos de UILongPressGestureRecognizer, je ne peux pas le comprendre ... mais vous pouvez écrire votre code à l'intérieur de -(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer { }.J'ai fait de même en utilisant cette méthode et j'ai obtenu un résultat réussi .. :).Vous n'avez même pas besoin d'ajouter une minuterie, à la place, vous pouvez utiliser ...

 UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] 
                                      initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.0;
lpgr.delegate = self;

Je pense que cela fonctionne parfaitement ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top