Cela semble simple .. Maintenez le Trackpad, déplacez le doigt, relâchez .. Mais d'une manière ou d'une autre, le balayage n'est pas déclenché (le panoramique 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 panoramique est commenté, le balayage est reconnu par le même geste. Avec ceci, 2 questions:
- Quelle est alors la différence entre un panoramique et un balayage?
- Comment simuler un balayage sur un simulateur iPhone?
ios
gesture-recognition
gestures
James Raitsev
la source
la source
Réponses:
Par définition, un geste de balayage est nécessairement aussi un geste de panoramique - les deux impliquent un mouvement de translation des points de contact. La différence réside dans la sémantique du module de reconnaissance: un module de reconnaissance de panoramique recherche le début du mouvement de translation et continue de signaler le mouvement dans n'importe quelle direction au fil du temps, tandis qu'un module de reconnaissance de balayage prend une décision instantanée quant à savoir si les touches de l'utilisateur se déplacent linéairement dans la direction requise.
Par défaut, deux outils de reconnaissance ne reconnaîtront pas le même geste, il y a donc un conflit entre le panoramique et le balayage. Très probablement, votre outil de reconnaissance de panoramique «gagne» le conflit car son geste est plus simple / plus général: un balayage est un panoramique, mais un panoramique peut ne pas être un balayage, donc le panoramique reconnaît en premier et exclut les autres outils de reconnaissance.
Vous devriez être en mesure de résoudre ce conflit à l'aide de la méthode déléguée
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
, ou peut-être sans délégation en faisant dépendre le module de reconnaissance de panoramique du module de reconnaissance de balayage avecrequireGestureRecognizerToFail:
.Une fois le conflit résolu, vous devriez pouvoir simuler un glissement à 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 vraie chose sur un appareil.) Le panoramique / glissement à deux doigts peut être fait en maintenant les touches Option et Shift.
la source
Le geste de balayage fonctionnera lorsque vous ne faites glisser votre doigt que dans certaines directions (balayez vers le haut, vers le bas, vers la gauche, vers la droite). Par exemple, les cellules à faire glisser dans le contrôleur de vue de tableau.
Pan Gesture fonctionnera lorsque vous faites glisser votre doigt dans toutes les directions. Vous pouvez lui donner une accélération ou une décélération. Par exemple, déplacer un objet d'un endroit à un autre ou faire tourner un spinner.
la source
UIPanGestureRecognizer est une sous-classe concrète de UIGestureRecognizer qui recherche les gestes de panoramique (glisser). L'utilisateur doit appuyer sur un ou plusieurs doigts sur une vue pendant qu'il effectue un panoramique. Les clients qui implémentent la méthode d'action pour ce module de reconnaissance de mouvement peuvent lui demander la traduction actuelle et la vitesse du mouvement.
Un geste de panoramique est continu. Il commence (a commencé ) lorsque le nombre minimum de doigts autorisés ( minimumNumberOfTouches ) a suffisamment bougé pour être considéré comme un pan. Il change (changé) lorsqu'un doigt bouge alors qu'au moins le nombre minimum de doigts est enfoncé. Il se termine ( terminé ) lorsque tous les doigts sont levés.
Les clients de cette classe peuvent, dans leurs méthodes d'action, interroger l'objet UIPanGestureRecognizer pour la traduction courante du geste ( translation (in :) ) et la vitesse de la traduction ( vitesse (in :) ). Ils peuvent spécifier la vue dont le système de coordonnées doit être utilisé pour les valeurs de translation et de vitesse. Les clients peuvent également réinitialiser la traduction à une valeur souhaitée.
Exemple de démonstration de Swift 3 UIPanGestureRecognizer: - Lien de ressource
Selon le document Apple. Apple UITapGestureRecognizer
UITapGestureRecognizer est une sous-classe concrète de UIGestureRecognizer qui recherche des taps simples ou multiples. Pour que le geste soit reconnu, le nombre de doigts spécifié doit toucher la vue un nombre spécifié de fois.
Bien que les taps soient des gestes discrets, ils sont discrets pour chaque état du dispositif de reconnaissance de gestes; ainsi le message d'action associé est envoyé lorsque le geste commence et est envoyé pour chaque état intermédiaire jusqu'à (et y compris) l'état de fin du geste. Le code qui gère les gestes de tap doit donc tester l'état du geste.
Swift 3 UITapGestureRecognizer Exemple de lien de ressource pour la démonstration
Exemple d'image pour la reconnaissance
la source
Selon http://hammerjs.github.io/ , je pense que la différence est:
Le geste est le même, tous les deux utilisent un doigt et bougent.
la source