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