Подтвердить что ты не робот

IOS9 - UITableViewCellContentView скрывает элементы управления внутри ячейки

Я создал пользовательский UITableViewCell под названием "SwitchCell", у которого есть переключатель. Только в iOS9, используя Xcode 7 beta, представление содержимого в ячейке находится поверх коммутатора. (См. Снимок экрана "Просмотр иерархии". Вы можете четко видеть, что представление содержимого ячейки находится поверх других представлений.): введите описание изображения здесь

Итак, все касания к UISwitch перехватываются, и IBAction не срабатывает. В iOS8 это не проблема. Смотрите скриншот для симулятора iOS 8.4. Вы можете видеть, что над элементами управления нет содержимого. введите описание изображения здесь

У кого-нибудь была эта проблема? Я попытался переделать NIB с нуля, но тот же результат.

My NIB - это представление размера свободной формы, без строки состояния. Он имеет два выхода: один для UILabel, один для UISwitch.

РЕДАКТИРОВАТЬ: пожалуйста, не забудьте проверить приведенный ниже ответ, который просит проверить, что вид корневой ячейки не только UIView, но и UITableViewCell. Эта проблема также может быть побочным эффектом.

4b9b3361

Ответ 1

После дальнейшего расследования и поиска я нашел свое решение здесь: Кнопка в UITableViewCell не отвечает в соответствии с ios 7

Что для меня было исправлено: cell.contentView.userInteractionEnabled = NO;

Это предотвращает перехват событий сотового содержимого, даже если он находится поверх других представлений.

Эта проблема произошла не только на iOS9, но и на iOS7. В iOS8 представление Content было за элементами управления.

Ответ 2

Проблема может быть в файле .xib для вашей ячейки. Когда вы создаете ячейку в отдельном .xib, не забудьте перетащить UITableViewCell на холст, не UIView.

Ответ 3

У меня была эта проблема, когда я повторно использовал ячейку как .xib. Я не понял, но когда я впервые создал xib, представление по умолчанию, которое оно создало, было фактически UIView, а не UITableViewCell. Кажется, что на каком-то этапе UIKit добавляет представление содержимого поверх других моих элементов и поэтому прерывает определенные события (например, события касания).

Я решил это, открыв мой xib файл и перетащив UITableViewCell на холст и скопировав элементы моего интерфейса из старого представления в новую ячейку.

Впоследствии дополнительные параметры также стали доступны в инспекторе атрибутов, который соответствовал тем, которые были для UITableViewCell.