Swift UIGestureRecogniser follow finger Swift UIGestureRecogniser follow finger ios ios

Swift UIGestureRecogniser follow finger


You're looking for the UIPanGestureRecognizer. You'll find the Apple Documentation here.

Here's a sample handler that will move a view with your finger. In Interface Builder, add a UIPanGestureRecognizer to a view that you want to be able to drag. Set the delegate to your ViewController. Set the action to this 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)    }}

Of course, you can add the UIPanGestureRecognizer programmatically:

In viewDidLoad for your ViewController, create the recognizer and add it to the view you want to be able to drag:

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