touchesShouldBegin: withEvent: inContentView: не вызывается для UIScrollview - PullRequest
1 голос
/ 20 апреля 2011


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

Ответы [ 2 ]

12 голосов
/ 16 декабря 2012

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

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

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

1 голос
/ 20 апреля 2011

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

...