Reputation: 3600
I have added left and right swipe gesture recognizers to an image view but only the right swipe works.
let swipeLeftRecognizer = UISwipeGestureRecognizer(target: self, action: "swipeLeft")
swipeLeftRecognizer.direction = .Left
let swipeRightRecognizer = UISwipeGestureRecognizer(target: self, action: "swipeRight")
swipeLeftRecognizer.direction = .Right
if itemImages.count > 1 {
imageView.addGestureRecognizer(swipeLeftRecognizer)
imageView.addGestureRecognizer(swipeRightRecognizer)
for recognizer in imageView.gestureRecognizers! {
recognizer.delegate = self
}
func swipeRight() {
if currentIndex == 0 {
itemImages.last!.getDataInBackgroundWithBlock( {
(data, error) -> Void in
self.imageView.image = UIImage(data: data!)
})
let transition = CATransition()
transition.duration = 1.0
transition.subtype = kCATransitionFromLeft
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionReveal
imageView.layer.addAnimation(transition, forKey: nil)
currentIndex = itemImages.count - 1
} else {
itemImages[currentIndex - 1].getDataInBackgroundWithBlock( {
(data, error) -> Void in
self.imageView.image = UIImage(data: data!)
})
let transition = CATransition()
transition.duration = 1.0
transition.subtype = kCATransitionFromLeft
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionReveal
imageView.layer.addAnimation(transition, forKey: nil)
currentIndex--
}
}
func swipeLeft() {
let index = itemImages.count - 1
if currentIndex == index {
itemImages[0].getDataInBackgroundWithBlock( {
(data, error) -> Void in
self.imageView.image = UIImage(data: data!)
})
let transition = CATransition()
transition.duration = 1.0
transition.subtype = kCATransitionFromLeft
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionReveal
imageView.layer.addAnimation(transition, forKey: nil)
currentIndex = 0
} else {
itemImages[currentIndex + 1].getDataInBackgroundWithBlock( {
(data, error) -> Void in
self.imageView.image = UIImage(data: data!)
})
let transition = CATransition()
transition.duration = 1.0
transition.subtype = kCATransitionFromLeft
transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionReveal
imageView.layer.addAnimation(transition, forKey: nil)
currentIndex++
}
}
Upvotes: 0
Views: 67
Reputation: 26
let swipeLeftRecognizer = UISwipeGestureRecognizer(target: self, action: "swipeLeft")
swipeLeftRecognizer.direction = .Left
let swipeRightRecognizer = UISwipeGestureRecognizer(target: self, action: "swipeRight")
swipeRightRecognizer.direction = .Right
/// you twice use 'swipeLeftRecognizer.direction'. And now your leftSwite work with right direction
Or you can conect swipeGesture from storyboard to your "swipeLeft" and "swipeRight" method and dont write any code before
Upvotes: 1