2011-04-20 2 views
1


В моем UIView я добавил UIScrollview как subview, а в UIScrollview я добавил UIButtons.
Теперь моя проблема в том, что я хочу знать, будет ли пользователь нажимать кнопку или нет, но touchesbegin из UIScrollview не вызывается там, где все остальные методы делегата прокрутки работают отлично.
Пожалуйста, дайте мне знать, если я делаю что-то неправильно.touchsShouldBegin: withEvent: inContentView: не вызван для UIScrollview

ответ

1

Если вы просто пытаетесь обрабатывать простые нажатия на кнопку, я предлагаю вам использовать - (void) addTarget: (id) target action: (SEL) action forControlEvents: (UIControlEvents) controlEvents (для получения дополнительной информации об этом смотрите в UIControl) UIButton, иначе мой путь был бы подклассом UIScrollView, добавлением делегата для прикосновений и передачей им на него, но он бесполезен, и я бы не использовал его, если не требуется особо настраиваемое поведение.

10

текст вашего вопроса не соответствует названию, но для тех, кто нашел их здесь, потому что touchesShouldBegin:withEvent:inContentView не получает вызов в подклассе UIScrollView, вот ответ:

Метод touchesShouldBegin:withEvent:inContentView вызывается только в том случае, если касательное субтитры реагирует на события касания. Если пользователь касается неинтерактивного подзаголовка, такого как UILabel, этот метод обычно не вызывается. Вы можете заставить его быть вызванным для касаний на любом заданном подвью, установив для свойства subview userInteractionEnabled значение YES.

Также обратите внимание на состояние вашего вида прокрутки delaysContentTouches. Если для него установлено значение «ДА», просмотр прокрутки не будет вызывать touchesShouldBegin:withEvent:inContentView: до истечения таймера, предполагая, что прикосновение вряд ли будет жестом прокрутки. Если вы хотите, чтобы touchesShouldBegin:withEvent:inContentView: вызывался сразу, установите delaysContentTouches в НЕТ.

Смежные вопросы