NB. Мои распознаватели жестов не различаются и находятся в разных viewControllers.
TLDR: Как сделать так, чтобы оба распознавателя жестов касания работали?
Я создал боковое меню из некоторых видов контейнеров и добавил к нему распознаватель жестов, который позволяет мне отклонять его при нажатии.Затем я создал еще один ViewController, где у меня есть несколько текстовых полей.Поскольку я хотел, чтобы клавиатура отклонялась при нажатии, я даже добавил распознаватель жестов, который позволяет мне скрывать клавиатуру всякий раз, когда я касаюсь вида.Теперь я заметил, что наличие жеста, который скрывает клавиатуру, не позволяет моему боковому меню скрыться при нажатии:
КОНТРОЛЛЕР ПРОСМОТРА ВНУТРЕННЕГО МЕНЮ
@IBOutlet weak var bigContainer: UIView!
@IBOutlet weak var sideMenuConstraint: NSLayoutConstraint!
var sideMenuOpen = false
var gesture : UITapGestureRecognizer?
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self,
selector: #selector(toggleSideMenu), name: NSNotification.Name("ToggleSideMenu"), object: nil)
gesture = UITapGestureRecognizer(target: self, action: #selector(ContainerViewController.toggleSideMenu))
}
@objc func toggleSideMenu() {
if sideMenuOpen {
sideMenuOpen = false
sideMenuConstraint.constant = -240
self.bigContainer.removeGestureRecognizer(gesture!)
} else {
sideMenuOpen = true
sideMenuConstraint.constant = 0
self.bigContainer.addGestureRecognizer(gesture!)
}
}
ГЛАВНЫЙ КОНТРОЛЛЕР ПРОСМОТРА ВИДА
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var menuOutlet: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let endEditingTapGesture = UITapGestureRecognizer(target: view, action: #selector(UIView.endEditing(_:)))
endEditingTapGesture.cancelsTouchesInView = false
view.addGestureRecognizer(endEditingTapGesture)
}
@IBAction func toggleSideMenu(_ sender: Any) {
print("Toggle side menu")
NotificationCenter.default.post(name: NSNotification.Name("ToggleSideMenu"), object: nil)
}
}
Я пытался убрать жест касания, чтобы скрыть клавиатуру в кнопке toggleSideMenu
, но она не сработала.