Comment obtenir la fonctionnalité du geste à long presse dans iOS 3.2 ci-dessous

StackOverflow https://stackoverflow.com/questions/4565889

  •  14-10-2019
  •  | 
  •  

Question

UILongPressGesture est disponible dans ios ver 3.2 et versions ultérieures. Mais je suis en train de développer des applications pour la compatibilité maximale et donc le ciblage ios ver2.0

Quelqu'un peut-il s'il vous plaît me guider sur la façon d'accomplir à long geste de presse à ios v2.0

Était-ce utile?

La solution

Pour un seul doigt, il est assez simple: Démarrer une minuterie dans la méthode touchesBegan et déclencher une action lors du déclenchement de la minuterie. Annuler la minuterie si vous obtenez un touchesEnded avant qu'il ne tire. Voici une implémentation qui utilise la méthode performSelector:withObject:afterDelay:.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self performSelector:@selector(fireLongPress)
               withObject:nil
               afterDelay:LONG_PRESS_THRESHOLD];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
}

- (void)fireLongPress {
    // do what you want to do
}

Vous voudrez probablement aussi tuer la minuterie si le doigt se déplace trop loin.

Avec multitouch, il est un peu plus compliqué. Vous devez garder une trace dont le toucher est qui, et décider quoi faire par exemple quand un doigt a enfoncé assez longtemps, mais l'autre n'a pas (ou figure ce UILongPressGestureRecognizer fait).

Autres conseils

Mettre en œuvre les méthodes de touches... dans votre vue. Si un certain laps de temps passe entre touchesBegan:withEvent: et touchesEnded:withEvent: sans qu'aucun événement touchesMoved:withEvent:, vous avez une pression longue.

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