126 votes

Quelle est la différence entre Pan et Swipe dans iOS ?

Cela semble simple. Tenez le Trackpad, déplacez le doigt, relâchez. .. Mais d'une manière ou d'une autre, le swipe n'est pas déclenché (le pan est déclenché à la place).

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] 
      initWithTarget:v action:@selector(handleSwipe:)];
swipeGesture.direction= UISwipeGestureRecognizerDirectionUp;
[v addGestureRecognizer:swipeGesture];

Pan est reconnu par la séquence ci-dessus à la place.

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] 
      initWithTarget:v action:@selector(handlePan:)];
[v addGestureRecognizer: panGesture];

Si le pan est commenté, le swipe est reconnu par le même geste . Avec ceci, 2 questions :

  • Quelle est donc la différence entre une casserole et une balayette ?
  • Comment peut-on simuler un glissement sur le simulateur d'iPhone ?

227voto

rickster Points 19870

Par définition, un geste de balayage est nécessairement aussi un geste de balayage panoramique, les deux impliquant un mouvement de translation des points de contact. La différence se situe au niveau de la sémantique du système de reconnaissance : un système de reconnaissance du mouvement panoramique recherche le début du mouvement de translation et continue à signaler le mouvement dans n'importe quelle direction au fil du temps, tandis qu'un système de reconnaissance du glissement prend une décision instantanée quant à savoir si les touches de l'utilisateur se sont déplacées linéairement dans la direction requise.

Par défaut, deux logiciels de reconnaissance ne reconnaîtront pas le même geste. Il y a donc un conflit entre le pan et le swipe. Il est fort probable que votre logiciel de reconnaissance du mouvement panoramique "gagne" le conflit car son geste est plus simple / plus général : Un balayage est un balayage mais un balayage peut ne pas être un balayage, donc le balayage est reconnu en premier et exclut les autres reconnaissances.

Vous devriez être en mesure de résoudre ce conflit en utilisant la méthode du délégué gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: ou peut-être sans délégation, en faisant dépendre la reconnaissance du panoramique de la reconnaissance du glissement avec requireGestureRecognizerToFail: .

Une fois le conflit résolu, vous devriez être en mesure de simuler un balayage à un doigt en faisant glisser rapidement la souris (bien que la souris soit plus précise que votre doigt, c'est un peu plus délicat que de faire la même chose sur un appareil). Il est possible de faire un panoramique ou un balayage à deux doigts en maintenant les touches Option et Shift.

27voto

Daya Kevin Points 690

Le geste de balayage fonctionne lorsque vous faites glisser votre doigt uniquement dans certaines directions (balayage vers le haut, balayage vers le bas, balayage vers la gauche, balayage vers la droite). Par exemple, des cellules pouvant être glissées dans un contrôleur de vue de tableau.

La gestuelle panoramique fonctionne lorsque vous faites glisser votre doigt dans n'importe quelle direction. Vous pouvez lui donner une accélération ou une décélération. Par exemple, pour déplacer un objet d'un endroit à un autre ou pour faire tourner une roue

0voto

JasmineOT Points 41

Selon http://hammerjs.github.io/ Je pense que la différence est :

  • pan : déplacer les directions dans la même grande vue
  • glisser : passer d'une vue à l'autre

Le geste est le même, les deux utilisent un doigt et bougent.

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