Один из моих UICollectionViews не прокручивает и не реагирует на сенсорные события внутри моего контейнера UIScrollView [Puzzling] - PullRequest
0 голосов
/ 15 ноября 2018

У меня необычная и сложная проблема.Я глубоко изучил StackOverflow и не смог найти никаких решений.Пожалуйста, не спрашивайте о моем стиле дизайна - это должно быть так.

У меня есть UIPageViewController, который содержит UIScrollView, который содержит 4 UICollectionViews.Каждое из этих представлений коллекции должно быть прокручиваемым по горизонтали, но не прокручиваемым по вертикали.Представление прокрутки необходимо, потому что экран недостаточно велик для отображения всех 4 представлений коллекции.После загрузки экрана 4-й вид коллекции не сразу виден.После прокрутки вниз 4-й вид коллекции становится видимым.

Проблема, с которой я столкнулся, заключается в том, что представление 4-й коллекции не реагирует на прикосновения.В частности, он не реагирует на нажатия или попытки прокрутки.Остальные 3 работают отлично.Что делает это загадочным и странным, так это то, что четвертый точно такой же, как остальные 3, делегат и источник данных установлены правильно, и взаимодействие с пользователем включено.Единственное реальное различие между проблемным представлением коллекции и другим состоит в том, что оно не сразу видно при загрузке экрана.

Когда я пытаюсь прокрутить, он ведет себя так, как будто я пытаюсь изменить страницу, поэтому UIPageView меняет страницу.Таким образом, CollectionView вообще не регистрирует никаких касаний.У меня есть догадка, что это связано либо с GestureRecognizer из PageView, либо с тем, что его не видно на экране при начальной загрузке.

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Решил мою собственную проблему благодаря упоминанию impression7vx о Debug View Hierarchy. Не имел никакого понятия, что это существовало, но это позволило мне обнаружить недостаток. Я просто пишу это, чтобы помочь людям, которые столкнутся с этим в будущем.

У меня было представление содержимого внутри ScrollView, которое имело проблемные ограничения. Я установил «равные высоты» с ScrollView, но при загрузке экрана высота была статической. Только половина представления прокрутки показала, и эта половина будет зарегистрирована как высота для UIView. Поскольку он был статическим, при прокрутке представление не увеличивалось, и 4-е представление коллекции больше не было бы внутри этого контейнера. По какой-то причине, поскольку представление коллекции не было в представлении контейнера, оно не регистрировало касания.

Решено вручную, сделав высоту равной значению вида прокрутки! Это позволило представлению содержимого содержать все представления коллекции, что заставило их снова вести себя нормально.

0 голосов
/ 15 ноября 2018

Не уверен на 100%, не увидев инициализацию кода или раскадровки, но лучше всего то, что, возможно, существует перекрытие представлений.Вы можете запустить свою программу и нажать на 2 перекрывающихся прямоугольника.Это Debug View Hierarchy.Он показывает вам ваш текущий кадр на вашем телефоне, и вы можете видеть представление в иерархическом статусе.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...