Im trying to get a UISwipeGestureRecognizer to work in Swift 3, the default swipe right is working correctly though not up down or left.
I have tried it by control d
var swipeGesture = UISwipeGestureRecognizer()
Take view and set IBOutlet:
@IBOutlet weak var viewSwipe: UIView!
Write this pretty code on viewDidLoad()
let direction: [UISwipeGestureRecognizerDirection] = [.up, .down, .left, .right]
for dir in direction{
swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.swipeView(_:)))
viewSwipe.addGestureRecognizer(swipeGesture)
swipeGesture.direction = dir
viewSwipe.isUserInteractionEnabled = true
viewSwipe.isMultipleTouchEnabled = true
}
Now, this is method is calling when swipe gesture is recognized.
@objc func swipeView(_ sender:UISwipeGestureRecognizer){
UIView.animate(withDuration: 1.0) {
if sender.direction == .right{
self.viewSwipe.frame = CGRect(x: self.view.frame.size.width - self.viewSwipe.frame.size.width, y: self.viewSwipe.frame.origin.y, width: self.viewSwipe.frame.size.width, height: self.viewSwipe.frame.size.height)
}else if sender.direction == .left{
self.viewSwipe.frame = CGRect(x: 0, y: self.viewSwipe.frame.origin.y, width: self.viewSwipe.frame.size.width, height: self.viewSwipe.frame.size.height)
}else if sender.direction == .up{
self.viewSwipe.frame = CGRect(x: self.view.frame.size.width - self.viewSwipe.frame.size.width, y: 0, width: self.viewSwipe.frame.size.width, height: self.viewSwipe.frame.size.height)
}else if sender.direction == .down{
self.viewSwipe.frame = CGRect(x: self.view.frame.size.width - self.viewSwipe.frame.size.width, y: self.view.frame.size.height - self.viewSwipe.frame.size.height, width: self.viewSwipe.frame.size.width, height: self.viewSwipe.frame.size.height)
}
}
}
100% working in my project and tested