странная передача события ios touch с помощью UIGestureRecognizer

привет, я наблюдаю что-то странное в пользовательских представлениях iOS, где у меня есть кнопка внутри пользовательского представления, я ищу документацию или ваш ответ, чтобы объяснить, почему у меня есть это наблюдение

у меня есть пользовательский вид (подкласс UIView), он содержит простую кнопку, я привязываю событие касания кнопки через addTarget: Action с UITouchUpInside, я просто привязываю его селектор к простому методу, который NSLog сообщение

если вы отобразите пользовательский вид и нажмете кнопку, вы увидите сообщение в консоли, все работает как положено.

Однако, если вы добавите UIGestureReognizer в пользовательское представление и запустите его, когда вы нажмете кнопку, он больше не печатает сообщение ПОЧЕМУ??? я провел более глубокое исследование и, посмотрев на метод hittest В CUSTOM VIEW (представление содержит кнопку) (я переопределяю его, но я ничего не делал, я просто снова вызываю super), метод hittest возвращает правильное представление, т.е. когда я нажимаю кнопку, самый популярный метод пользовательского представления возвращает UIButton

я не понимаю здесь цепочку событий, может ли кто-нибудь указать документацию, объясняющую это?

мне кажется, когда вы добавляете регонизатор в представление контейнера кнопки, по какой-то причине кнопка НЕ ​​ЗНАЕТ, как обработать событие, поэтому она просит свой супервью (в данном случае кастомный вид) обработать его, но почему ?? я уже привязал обработчик события к кнопке через UITouchUPInside

пожалуйста, помогите, я хочу понять это


person user1233587    schedule 06.09.2012    source источник


Ответы (1)


Установите отменяет свойство TouchesInView на NO.

person Adam    schedule 06.09.2012
comment
привет Адам, спасибо за ваш ответ, и это работает. но можете ли вы объяснить, что именно происходит? я думаю, что я спрашиваю, когда у меня есть распознаватель жестов, как описано выше, когда я касаюсь кнопки, кто обрабатывает касание первым? контейнер пользовательского представления (который имеет распознаватель) или кнопку? хиттест предполагает, что кнопка является первым парнем, когда происходит событие касания, но ваше решение, похоже, предполагает, что представление контейнера блокирует событие? - person user1233587; 06.09.2012
comment
Распознаватель обрабатывает его первым, и вы решаете, передавать его или нет. - person Adam; 06.09.2012