如何只添加一次view.addGestureRecognizer?

时间:2016-01-19 10:49:05

标签: ios swift uigesturerecognizer

每次调用viewWillAppear self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 添加手势识别器。

如何查看我是否已添加识别器? 我知道我可以把它移到viewDidLoad,但这不是我想要的。

3 个答案:

答案 0 :(得分:2)

您可以检查手势实例是否存在,如下所示

 self.view.gestureRecognizers?.contains(yourgestureInstance)

self.view.gestureRecognizers提供已添加到视图中的所有gestureRecognizers数组。

答案 1 :(得分:1)

只要你的viewController进入屏幕,

viewWillAppear:就会调用everyTime。

viewDidLoad:只会被调用一次。

如果你不想在这种情况下将代码移动到viewDidLoad:,请在ViewController中添加一个布尔变量。

isRevealPanGastureAdded

之外的

delcare viewDidLoad:变量

var isRevealPanGastureAdded : Bool = false

viewWillAppear:下面写下代码。

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated);

        //this will be called only once                 
        if self.isRevealPanGastureAdded == false {
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
        self.isRevealPanGastureAdded = true;
        }
    }

答案 2 :(得分:0)

1)您可以添加布尔属性来检测在

之前调用viewWillAppear

2)您可以在属性中存储添加的手势识别器,如果不是nil,请不要再次添加

3)您可以在viewWillDisappear / viewDidDisappear

中删除添加的手势识别器