ios - 手势识别器不工作

标签 ios uigesturerecognizer

我已将左右滑动手势识别器添加到 ImageView ,但只有右侧滑动有效。

    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++
        }
    }

最佳答案

 let swipeLeftRecognizer = UISwipeGestureRecognizer(target: self, action: "swipeLeft")
        swipeLeftRecognizer.direction = .Left
        let swipeRightRecognizer = UISwipeGestureRecognizer(target: self, action: "swipeRight")
        swipeRightRecognizer.direction = .Right

///你两次使用'swipeLeftRecognizer.direction'。 现在你的 leftSwite 以正确的方向工作

或者您可以将 Storyboard中的 swipeGesture 连接到您的“swipeLeft”和“swipeRight”方法,并且在此之前不要编写任何代码

关于ios - 手势识别器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34907375/

相关文章:

iOS 在 iPhone 上启动 Maps-App 应用内。

ios - 如何使 UIImageView 自动调整到加载图像的大小

ios - Swift 3 多个手势识别器 SWRevealController

ios - 将手势转发到 super View

ios - collectionView 中的 TapGesture

ios - 制作具有滑动到下一张图像功能的 ImageView

ios - 我可以在 ios8 中使用 libicucore.dylib,这是一个私有(private)图书馆吗?

ios - 字节 > NSData > NSString

iphone - 添加到收藏夹功能?

ios - 如何正确禁用 UIPickerView 组件滚动?