每次viewWillAppear
它都會調用 self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
添加手勢識別器。如何只添加一次view.addGestureRecognizer一次?
如何檢查我是否尚未添加識別器? 我知道我可以將它移動到viewDidLoad
,但這不是我想要的。
每次viewWillAppear
它都會調用 self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
添加手勢識別器。如何只添加一次view.addGestureRecognizer一次?
如何檢查我是否尚未添加識別器? 我知道我可以將它移動到viewDidLoad
,但這不是我想要的。
1)您可以添加布爾屬性來檢測viewWillAppear
調用前
2)您可以在屬性存儲添加手勢識別,如果它是不nil
不要再添加它
3)您可以刪除已添加的手勢識別在viewWillDisappear
/viewDidDisappear
您可以檢查的手勢實例存在類似如下
self.view.gestureRecognizers?.contains(yourgestureInstance)
self.view.gestureRecognizers
給出已添加到視圖中的所有gestureRecognizers
的數組。
viewWillAppear:
每當viewController進入屏幕時都會調用everyTime。
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;
}
}