Swift UIGestureRecognizer suivre le doigt

Je fais une application iOS8 en utilisant Swift. J'aimerais que l'user puisse utiliser des gestes pour révéler certaines parties de l'interface. Ainsi, par exemple, l'user fait glisser son doigt vers le haut et la vue sur laquelle il glisse son doigt se déplace, suivant son doigt pour révéler une autre vue en dessous.

Ce que j'aimerais, c'est un geste pour donner un résultat similaire à la boîte de notification que vous pouvez faire descendre du haut de l'écran. J'ai regardé la documentation et je n'arrive pas à find un geste approprié.

J'en ai vu un appelé UISwipeGestureRecogniser, mais le seul problème est qu'il ne suit pas votre doigt, il exécute simplement une fonction quand je glisse mon doigt vers le haut / bas.

Voici la page de documentation: https://developer.apple.com/documentation/uikit/uigesturerecognizer

Vous searchz UIPanGestureRecognizer . Vous findez la documentation Apple ici .

Voici un exemple de gestionnaire qui va déplacer une vue avec votre doigt. Dans Interface Builder , ajoutez un UIPanGestureRecognizer à une vue que vous souhaitez pouvoir faire glisser. Définissez le délégué sur votre ViewController . Définissez l'action sur cette action:

Swift 2.X:

 @IBAction func handlePan(gestureRecognizer: UIPanGestureRecognizer) { if gestureRecognizer.state == .Began || gestureRecognizer.state == .Changed { let translation = gestureRecognizer.translationInView(self.view) // note: 'view' is optional and need to be unwrapped gestureRecognizer.view!.center = CGPointMake(gestureRecognizer.view!.center.x + translation.x, gestureRecognizer.view!.center.y + translation.y) gestureRecognizer.setTranslation(CGPointMake(0,0), inView: self.view) } } 

Swift 3:

 @IBAction func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) { if gestureRecognizer.state == .began || gestureRecognizer.state == .changed { let translation = gestureRecognizer.translation(in: self.view) // note: 'view' is optional and need to be unwrapped gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y + translation.y) gestureRecognizer.setTranslation(CGPoint.zero, in: self.view) } } 

Bien sûr, vous pouvez append le UIPanGestureRecognizer programmation:

Dans viewDidLoad pour votre ViewController , créez le module de reconnaissance et ajoutez-le à la vue que vous voulez pouvoir faire glisser:

  let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan)) self.someDraggableView.addGestureRecognizer(gestureRecognizer) 

Vous n'êtes pas vraiment après avoir reconnu un geste autant que suivre le mouvement des doigts.

Essayez de régler le controller de vue pour qu'il ait un appel sur un contact dans la vue et commencez à suivre les mouvements du doigt jusqu'à ce qu'il y ait une retouche.