UITableViewCell не перехватывает события прокрутки - PullRequest
0 голосов
/ 30 августа 2018

У меня есть tableView, в котором некоторые ячейки имеют UICollectionView (для горизонтальных каруселей). Он отлично работает для каждой ячейки, кроме той, в которой tableView нельзя прокручивать (ни в симуляторе, ни на устройстве). Точнее, прокрутка возможна, если касание происходит на UICollectionViewCell, но не на той части UITableViewCell, которая не содержит UICollectionVIew.

Я бы хотел выяснить, почему это так, но я не уверен, как отладить это. Есть ли точка останова, возможно, символическая точка останова, которую я могу установить, чтобы понять, где происходят события касания?

Я попытался напечатать материал в этих 3 методах (из самой ячейки), чтобы увидеть, как и когда они были вызваны, но там не вызваны.

override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool 

override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool 

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 

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

Большое спасибо!

EDIT

Вот еще точность:

Нет других жестов, кроме как у UITableView и UICollectionView.

Моя иерархия представлений выглядит следующим образом:

|--- UITableViewCell --------------|
|-|---cell's content view -------|-|
|-|-|---container view --------|-|-|
|-|-|-|---labels ------------|-|-|-|
|-|-|-|---collection view ---|-|-|-|
|-|-|-|----------------------|-|-|-|
|----------------------------------|

Вид контейнера внутри представления содержимого ячейки имеет свое назначение. Но я чувствую, что именно это представление блокирует жесты прокрутки.

Кроме isUserInteractionEnable = true, есть ли что-нибудь еще, что могло бы блокировать события жестов, чтобы подняться в суперпредставления? К этому виду контейнера не прикреплены никакие жесты.

1 Ответ

0 голосов
/ 31 августа 2018

Я наконец-то заставил его работать, изменив цвет фона представления контейнера с .clear на какой-то серый.

Я запутался, что это работает, потому что прозрачные представления (цвет: .clear) должны участвовать в цепочке респондента события. Но, как говорится, все было установлено на .clear, от представления контейнера до tableView. Таким образом, цвет, который отображался, был цветом фона viewController.

Я не уверен, что это была плохая установка с моей стороны или ошибка в UIKit, хотя. Я предполагаю, что это на мне? Во всяком случае ... Я оставляю это здесь на случай, если кто-то еще столкнется с этой проблемой.

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