У меня проблема с UITableView, не обнаруживающим касаний.

В приложении только для iPhone у меня есть UIViewController, который содержит:

  • UIScrollView
    • UIView (скажем, представление содержимого)
      • Некоторые ярлыки
      • UITableView (последний)

Ярлыки имеют динамическую высоту, потому что они содержат текст, который я должен получить из Интернета, поэтому я использую автоматический макет. Я устанавливаю размер содержимого UIScrollView внутри метода viewDidLayoutSubviews, и я делаю это, суммируя UITableView.frame.origin.y и его высоту.

Здесь возникает проблема: когда метки содержат только несколько слов, а UITableView не превышает размер экрана iPhone, все работает нормально. Но когда они растут и UITableView опускается, когда я прокручиваю вниз, я больше не могу нажимать на ячейку. Кроме того, если при загрузке представления таблица наполовину видна, а наполовину нет, я могу щелкнуть видимые ячейки, но если я прокручиваю вниз, я не могу щелкать другие.

Я использую swift 2 и Xcode 7.

Вот пример:

Кликабельно:

enter image description here

Не кликабельно:

enter image description here

2
Alessandro 7 Сен 2016 в 15:31

2 ответа

Если вы используете Autolayout, не нужно указывать contentSize на UIScrollView, поскольку он будет автоматически расширяться, принимая высоту своего подвида.

В вашем случае увеличьте высоту Базы UIView (представление содержимого, как упомянуто вами), которая удерживает tableView при увеличении tableView height.

UITableView перестает отвечать, когда выходит за пределы своего представления контейнера.

0
ramgandhi 7 Сен 2016 в 12:55

Добавление информации в ответ @ Rémy Virin здесь :

Из документации Apple не следует встраивать UITableView внутри UIScrollView.

Важно: не следует встраивать объекты UIWebView или UITableView в объекты UIScrollView. Если вы это сделаете, это может привести к неожиданному поведению, потому что события касания для двух объектов могут быть перепутаны и неправильно обработаны.

Дополнение:Решение Поскольку вы также хотите прокручивать содержимое над таблицей, единственным решением является размещение Header View для таблицы и размещение содержимого там, чтобы Прокрутка по таблице.

0
Community 23 Май 2017 в 11:47