#ipad #uitableview #uiview #orientation #device-orientation
#iPad #uitableview #uiview #ориентация #ориентация устройства
Вопрос:
У меня есть UIViewController с подклассом UIView в качестве подвида, и здесь UITableView добавлен в качестве подвида этого UIView следующим образом:
UIViewController
-UIView
--UITableView (plucked from a UITableViewController)
На iPad, если я загружаю контроллер представления в любой ориентации, я могу отлично взаимодействовать с табличным представлением. Однако, если я поворачиваю устройство в новую ориентацию, у меня есть код, который изменяет рамки, чтобы они соответствовали новому разрешению, но небольшая область таблицы не реагирует на прикосновения и еще много чего.
например, мы поворачиваем портрет в альбомную ориентацию: если вы представляете фигуру портрета, расположенную поверх экрана с альбомной ориентацией, эта область остается отзывчивой, но небольшая полоска справа не реагирует.
У кого-нибудь есть идеи, что я, возможно, пропустил? Заранее спасибо.
РЕДАКТИРОВАТЬ: я успешно проверил кадры CGRect всех объектов от ячеек tableview до верхнего UIViewController.
Комментарии:
1. Возможно, вы изменяете размер UITableView в Интернете, но не родительский UIView?
2. Я успешно переназначил все границы фрейма рассматриваемого tableview до верхнего UIViewController, и они совпадают. Представление таблицы изначально извлекается из UIViewController, но этот другой VC выпущен — может ли tableview все еще искать своего первоначального владельца?
3. Хммм … не совсем невозможно. Зачем вам копировать его из одного VC, чтобы добавить его в другой в любом случае? Звучит не как самое элегантное решение 🙂
4. Конечно, вы абсолютно правы — я переделываю некоторые файлы из cocoacontrols для RSS-ридера для универсального приложения — оно отлично работает, если не считать этой проблемы с ориентацией на iPad.
Ответ №1:
Область, которая теряет свое взаимодействие, должно быть, вышла за рамки своего супервизора после поворота.
вы можете проверить это, установив TableView.clipSubviews = YES;
используя это, вы обрезаете часть tableview, выходящую за пределы супервизора.
Комментарии:
1. Спасибо за ответ, единственным доступным свойством является TableView.clipsToBounds, который, к сожалению, ничего не сделал при размещении во всех супер-представлениях.