Selon le document Apple. Apple UIPanGestureRecognizer La différence entre un panoramique et un balayage comme ci-dessous: -
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
import UIKit
class ViewController: UIViewController {
// this records our circle's center for use as an offset while dragging
var circleCenter: CGPoint!
override func viewDidLoad() {
super.viewDidLoad()
// Add a draggable view
let circle = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 100.0))
circle.center = self.view.center
circle.layer.cornerRadius = 50.0
circle.backgroundColor = UIColor.green()
// add pan gesture recognizer to
circle.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.dragCircle)))
self.view.addSubview(circle)
}
func dragCircle(gesture: UIPanGestureRecognizer) {
let target = gesture.view!
switch gesture.state {
case .began, .ended:
circleCenter = target.center
case .changed:
let translation = gesture.translation(in: self.view)
target.center = CGPoint(x: circleCenter!.x + translation.x, y: circleCenter!.y + translation.y)
default: break
}
}
}
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
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(doubleTapped))
tap.numberOfTapsRequired = 2
view.addGestureRecognizer(tap)
}
func doubleTapped() {
// do something cool here
print("Test TapGesture")
}
Exemple d'image pour la reconnaissance