首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >所有其他手势都失败了

所有其他手势都失败了
EN

Stack Overflow用户
提问于 2015-05-23 10:03:20
回答 1查看 169关注 0票数 0

在我的容器控制器中,有时我必须在视图中添加一个手势识别器来处理事情。是否有可能在上述视图中失败所有其他手势而只执行添加的手势?

选项1:

现在,当检测到新手势时,所有的单个手势都会失败,但是这样做似乎不太有效。

备选方案2:

另一种方法是获取所述视图的手势数组,并将数组中所有手势的enabled设置为false

我要做的是将新手势的委托设置为容器控制器,并在检测到新手势时使用一个委托方法来失败所有其他手势。

EN

回答 1

Stack Overflow用户

发布于 2015-05-23 11:04:02

如果您想要删除其他手势识别器,并希望保留用户使用的一个手势,则可以通过检测该手势的方向来完成操作,然后可以删除所有其他手势,也可以保留已使用的手势。

以下是完整的工作代码:

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let swipeRight = UISwipeGestureRecognizer(target: self, action: Selector("rightSwiped:"))
        swipeRight.direction = UISwipeGestureRecognizerDirection.Right
        self.view.addGestureRecognizer(swipeRight)

        let swipeLeft = UISwipeGestureRecognizer(target: self, action: Selector("leftSwiped:"))
        swipeLeft.direction = UISwipeGestureRecognizerDirection.Left
        self.view.addGestureRecognizer(swipeLeft)

        let swipeDown = UISwipeGestureRecognizer(target: self, action: Selector("downSwiped:"))
        swipeDown.direction = UISwipeGestureRecognizerDirection.Down
        self.view.addGestureRecognizer(swipeDown)

        let swipeUp = UISwipeGestureRecognizer(target: self, action: Selector("upSwiped:"))
        swipeUp.direction = UISwipeGestureRecognizerDirection.Up
        self.view.addGestureRecognizer(swipeUp)
    }

    func rightSwiped(recognizer: UISwipeGestureRecognizer)
    {
        println("right swiped ")
        manageGesture(recognizer)

    }

    func manageGesture(recognizer: UISwipeGestureRecognizer) {

        //First detect which gesture is used

        if recognizer.direction == UISwipeGestureRecognizerDirection.Right {
            println("Right")

            if let recognizers = view.gestureRecognizers {
                for recognizer in recognizers {
                    if recognizer.direction == UISwipeGestureRecognizerDirection.Right {
                        println("Called")
                    }else {
                        view.removeGestureRecognizer(recognizer as! UIGestureRecognizer)
                    }
                }
            }

        }else if recognizer.direction == UISwipeGestureRecognizerDirection.Left {
            println("Left")

            if let recognizers = view.gestureRecognizers {
                for recognizer in recognizers {
                    if recognizer.direction == UISwipeGestureRecognizerDirection.Left {
                        println("Called")
                    }else {
                        view.removeGestureRecognizer(recognizer as! UIGestureRecognizer)
                    }
                }
            }
        }else if recognizer.direction == UISwipeGestureRecognizerDirection.Up {
            println("Up")

            if let recognizers = view.gestureRecognizers {
                for recognizer in recognizers {
                    if recognizer.direction == UISwipeGestureRecognizerDirection.Up {
                        println("Called")
                    }else {
                        view.removeGestureRecognizer(recognizer as! UIGestureRecognizer)
                    }
                }
            }
        }else if recognizer.direction == UISwipeGestureRecognizerDirection.Down {
            println("Down")

            if let recognizers = view.gestureRecognizers {
                for recognizer in recognizers {
                    if recognizer.direction == UISwipeGestureRecognizerDirection.Down {
                        println("Called")
                    }else {
                        view.removeGestureRecognizer(recognizer as! UIGestureRecognizer)
                    }
                }
            }
        }

    }

    func leftSwiped(recognizer: UISwipeGestureRecognizer)
    {
        println("left swiped ")
        manageGesture(recognizer)
    }

    func downSwiped(recognizer: UISwipeGestureRecognizer)
    {
        println("down swiped ")
        manageGesture(recognizer)
    }

    func upSwiped(recognizer: UISwipeGestureRecognizer)
    {
        println("Up swiped ")
        manageGesture(recognizer)
    }


}

希望这就是你所需要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30411378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档