每次viewWillAppear
它调用时 self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
以添加手势识别器。
如何检查我是否尚未添加识别器?我知道我可以把它移到viewDidLoad
,但这不是我想要的。
您可以检查手势实例是否存在,如下所示
self.view.gestureRecognizers?.contains(yourgestureInstance)
self.view.gestureRecognizers
给出已添加到视图中的所有gestureRecognizers
的数组。
你的viewController出现在屏幕上时,viewWillAppear:
都会调用。
viewDidLoad:
只会被调用一次。
如果您不想将代码移动到viewDidLoad:
在这种情况下,请将一个布尔变量添加到您的 ViewController 中。
Delcare isRevealPanGastureAdded
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;
}
}
1)您可以添加布尔属性来检测之前调用viewWillAppear
2)您可以将添加的手势识别器存储在属性中,如果不nil
请不要再次添加
3)您可以在viewWillDisappear
/viewDidDisappear
中删除添加的手势识别器