2017-09-25 3 views
0

J'ai besoin de détecter tous les balayages à gauche et à droite, y compris le glissement vers le haut. Je veux dire que j'ai besoin de détecter tous les balayages dans la zone de 180 degrés, je ne suis pas sûr si je suis assez clair. Quand j'ajoute .up.right et .left il ne détecte pas les diagonales telles que left-up, que dois-je faire? Merci!Swift UISwipeGestureRecognizer comment détecter les balayages diagonaux?

+0

Vous devriez essayer PanGestureRecognizer. –

+0

@ BaranKaraoğuz que signifie «Pan»? C'est un nouveau terme pour moi en fait. –

+0

Dostum türksün zaten kasmanın anlamı yok: D PanGesture bir vue yada nesneye dokunup onu hareket etmeye yani parmağının telefondaki kordinatlarını anlayan modèle Bu yüzden söylediğin şeyi pangesture yapabilirsin swipe'dan ziyade. –

Répondre

1

UIPanGestureRecognizer est la voie à suivre pour cela:

private var panRec: UIPanGestureRecognizer! 
private var lastSwipeBeginningPoint: CGPoint? 

override func viewDidLoad() { 
    panRec = UIPanGestureRecognizer(target: self, action: #selector(ViewController.handlePan(recognizer:))) 
    self.view.addGestureRecognizer(panRec) 
} 

func handlePan(recognizer: UISwipeGestureRecognizer) { 
    if recognizer.state == .began { 
     lastSwipeBeginningPoint = recognizer.location(in: recognizer.view) 
    } else if recognizer.state == .ended { 
     guard let beginPoint = lastSwipeBeginningPoint else { 
      return 
     } 
     let endPoint = recognizer.location(in: recognizer.view) 
     // TODO: use the x and y coordinates of endPoint and beginPoint to determine which direction the swipe occurred. 
    } 
}