Я обрабатываю касания для пары моих компонентов пользовательского интерфейса в моем контроллере вида (пользовательский подкласс UIViewController). В нем есть методы touchesBegan:withEvent:
, touchesMoved:withEvent:
и touchesEnded:withEvent:
. Все работало отлично. Затем я добавил вид прокрутки (UIScrollView) как вид сверху в иерархии.
Теперь мои сенсорные обработчики на контроллере вида не работают. Их не вызывают. Интересно то, что внутри вида прокрутки у меня есть различные другие компоненты пользовательского интерфейса, которые работают. Некоторые из них - это кнопки, некоторые - пользовательские виды, которые определяют свои собственные touchchesBegan:withEvent:
, и т.д. Единственное, что не работает - это сенсорные обработчики на контроллере представлений.
Я подумал, может быть, это из-за того, что вид прокрутки перехватывает эти касания для своих собственных целей, но я подраздел UIScrollView и просто чтобы посмотреть, смогу ли я заставить его работать, я возвращаю YES
всегда из touchesShouldBegin: withEvent:inContentView:
и NO
всегда с touchchesShouldCancelInContentView:
. До сих пор не работает.
Если это имеет значение, то мой контроллер вида находится внутри контроллера табуляции, но я не думаю, что это имеет значение.
У кого-нибудь была эта проблема и есть готовое решение? Я думаю, что обезьяны вида прокрутки вверх по цепочке ответчика. Могу ли я вернуть его обратно? Думаю, если я больше ничего не могу понять, я сделаю вид верхнего уровня под видом прокрутки пользовательским видом и переадресацию сообщений на контроллер вида, но это кажется неприятным.