robo-monk
robo-monk

Reputation: 131

Swipe Gestures - Swift 3

I need my app to respond to a swipe gesture, and I got this code so far. But for some reason when I swipe, the app crashes. What's the problem please? I use swift 3 in xcode. Thank you

    override func viewDidLoad() {
    super.viewDidLoad()

    var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    self.view.addGestureRecognizer(swipeRight)

    var swipeDown = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeDown.direction = UISwipeGestureRecognizerDirection.Down
    self.view.addGestureRecognizer(swipeDown)
}

func respondToSwipeGesture(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {


        switch swipeGesture.direction {
            case UISwipeGestureRecognizerDirection.Right:
                print("Swiped right")
            case UISwipeGestureRecognizerDirection.Down:
                print("Swiped down")
            case UISwipeGestureRecognizerDirection.Left:
                print("Swiped left")
            case UISwipeGestureRecognizerDirection.Up:
                print("Swiped up")
            default:
                break
        }
    }
}

Upvotes: 1

Views: 4625

Answers (1)

Aakash
Aakash

Reputation: 2269

It is due to the error:- No method declared with Objective-C selector 'respondToSwipeGesture:'

It means that no method "respondToSwipeGesture" is found by the compiler and when you try to swipe the program tries to find this method and crashes as it is unable to find it.

Please provide actions like this:-

let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))

let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(self.respondToSwipeGesture))

This will resolve your issue.

Upvotes: 5

Related Questions