У меня проблема с UITableView, не обнаруживающим касаний.
В приложении только для iPhone у меня есть UIViewController, который содержит:
- UIScrollView
- UIView (скажем, представление содержимого)
- Некоторые ярлыки
- UITableView (последний)
- UIView (скажем, представление содержимого)
Ярлыки имеют динамическую высоту, потому что они содержат текст, который я должен получить из Интернета, поэтому я использую автоматический макет. Я устанавливаю размер содержимого UIScrollView внутри метода viewDidLayoutSubviews
, и я делаю это, суммируя UITableView.frame.origin.y
и его высоту.
Здесь возникает проблема: когда метки содержат только несколько слов, а UITableView не превышает размер экрана iPhone, все работает нормально. Но когда они растут и UITableView опускается, когда я прокручиваю вниз, я больше не могу нажимать на ячейку. Кроме того, если при загрузке представления таблица наполовину видна, а наполовину нет, я могу щелкнуть видимые ячейки, но если я прокручиваю вниз, я не могу щелкать другие.
Я использую swift 2 и Xcode 7.
Вот пример:
Кликабельно:
Не кликабельно:
2 ответа
Если вы используете Autolayout
, не нужно указывать contentSize
на UIScrollView
, поскольку он будет автоматически расширяться, принимая высоту своего подвида.
В вашем случае увеличьте высоту Базы UIView
(представление содержимого, как упомянуто вами), которая удерживает tableView
при увеличении tableView height
.
UITableView
перестает отвечать, когда выходит за пределы своего представления контейнера.
Добавление информации в ответ @ Rémy Virin здесь :
Из документации Apple не следует встраивать UITableView внутри UIScrollView.
Важно: не следует встраивать объекты UIWebView или UITableView в объекты UIScrollView. Если вы это сделаете, это может привести к неожиданному поведению, потому что события касания для двух объектов могут быть перепутаны и неправильно обработаны.
Дополнение:Решение Поскольку вы также хотите прокручивать содержимое над таблицей, единственным решением является размещение Header View
для таблицы и размещение содержимого там, чтобы Прокрутка по таблице.
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.