Использую UISplitViewController
. Я хотел показать пустую сцену с деталями выбора, когда пользователь поворачивает свой iPhone 6 Plus в портрет и больше не видит никаких деталей. (Все остальные устройства ведут себя предсказуемо. Только 6 Plus может изменить свой внешний вид.) Теперь я использую вместо него split view delegate, который включает в себя некоторые странные запросы, но дело не в этом.Реагировать на iPhone 6+ rotation - traitCollectionDidChange: вызывается дважды для контроллера nav
Я задавался вопросом, как узнать, изменился ли iPhone 6 в ландшафт.
Лучшая идея, с которой я столкнулся: реагировать на изменения окружающей среды. Контроллер главного представления остается компактным во все времена, только его родительский диспетчер навигации меняется с компактного на обычный и обратно. (И UIWindow тоже, конечно.)
При использовании контроллера Разделить, для подклассов UINavigationController
в «Master», traitCollectionDidChange:
будет вызываться дважды при использовании iPhone 6 Plus и вращающийся в ландшафт. Он вызывается один раз при вращении назад.
willTransitionToTraitCollection:withTransitionCoordinator:
даже называется три раза и 1 раз, соответственно.
Я предполагаю, что это потому, что в ландшафте вы можете видеть два контроллера обзора рядом друг с другом. Для меня не имеет смысла, что UINavigationController
получает вызовы для контроллеров суб-представлений.
С UITraitCollections
не содержит информации о том, на какой монитор управления влияет, я не могу определить, насколько среда была изменена с регулярного до компактного горизонтального размера надежно. Одна из коллекций признаков сообщит о правильном новом значении, но я не могу различить их друг от друга.
Как вы решили это, теперь, когда обратные вызовы вызываются несколько раз с разными значениями?
Вы когда-нибудь это выясняли? – Luke
К сожалению, нет. Я могу придумать специальную теорию об этом, но это только на iPhone 6, а не на iPad. Может быть, это ошибка? Когда я прикоснусь к базе кода в конце этого года, я посмотрю с тогда новым SDK ¯ \\ _ (ツ) _/¯ – ctietze