В моем проекте у меня есть главный вид, в который я добавляю UITapGestureRecognizer
, а внутри этого основного вида у меня есть подпредставление, которое является пользовательским UIControl
, которое я назову UICustomButton
.
UICustomButton
переопределяет следующие методы UIControl
:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
pressAnimation()
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesEnded(touches, with: event)
releaseAnimation()
listener?.onClick(sender: self)
}
override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesCancelled(touches, with: event)
releaseAnimation()
}
Проблема, с которой я столкнулся, заключается в том, что все "касания клика" выполняют следующие обратные вызовы:
touchesBegan
touchesCancelled
Обратный вызов touchesEnded
не вызывается, его как бы игнорируют, и я не знаю почему.
Как можно заставить touchesEnded
вызываться вместо touchesCancelled
при касании?
Некоторые факты:
- если я удаляю
UITapGestureRecognizer
из родительского представления, все работает нормально;
- , даже не вызывая
supers
и переопределяя все touches
методы, touchesCancelled
называется = /;
- если я делаю "длинное касание" или "большой движущийся жест", то
touchesEnded
называется: o.