Иерархия:
MainV C звонки present(GameVC, animated: true, completion: nil)
let vc = self.storyboard?.instantiateViewController(withIdentifier: "GameVC") as! GameVC
self.present(vc, animated: true, completion: nil)
GameVC
имеет GameView
(подкласс UIView
), который охватывает весь V C
В инициализаторе для GameView
, у меня есть этот код для настроить жесты смахивания:
let leftGesture = UISwipeGestureRecognizer(target: self, action: #selector(leftSwipe))
leftGesture.direction = .left
self.addGestureRecognizer(leftGesture)
let rightGesture = UISwipeGestureRecognizer(target: self, action: #selector(rightSwipe))
rightGesture.direction = .right
self.addGestureRecognizer(rightGesture)
let downGesture = UISwipeGestureRecognizer(target: self, action: #selector(downSwipe))
downGesture.direction = .down
self.addGestureRecognizer(downGesture)
Соответствующие селекторы:
@objc func downSwipe() {
//code
}
@objc func leftSwipe() {
//code
}
@objc func rightSwipe() {
//code
}
Селекторы не вызывают. Однако, когда я делаю GameVC
начальный V C, который отображается (перетаскивая стрелку раскадровки на GameVC
), жесты работают как положено. Это заставляет меня думать, что вызов present()
возможно, испортил иерархию, с которой работают жесты, но я не совсем уверен.