2013-08-12 4 views
9

Мой rootViewController - это UITabbarController и содержит UINavigationController s.Почему строка состояния вращается и остается неподвижным портрет

Чтобы ограничить вращение, поскольку iOS6, в некоторых, но не во всех представлениях, я подклассифицировал оба этих контроллера, чтобы уважать ответ toAutorotate их верхнего или видимого вида.

Это все работает просто отлично ... в большинстве случаев.

В одном случае, начиная с вида (UITableviewController), который не допускает вращения.

Я нажимаю вид, который позволяет авторотировать, поворачиваться в альбомный, а затем обратно на портрет.

Затем, когда я выхожу из вида, все выглядит хорошо.

Но теперь, если я поворачиваю устройство, сама строка состояния вращается, оставляя пустое место сверху и закрывая часть левой части текущего вида. Текущее представление не вращается (как и не должно). Только строка состояния вращается, назад и вперед. Представление остается отзывчивым, получает штрихи и работает как обычно, не изменяет размер или не реагирует на вращение каким-либо образом (как это не должно).

Это поведение продолжается до тех пор, пока я не убью и не перезагрузите приложение. Как только это произойдет, я не нашел другого способа остановить его. При перезапуске все снова работает правильно и будет работать должным образом в течение неопределенной продолжительности. Я могу сидеть там, толкать, выскакивать, вращаться взад и вперед, до моего сердца без проблем.

Я никогда не мог воссоздать это в симуляторе.

Это происходит без видимой причины, я не могу этого добиться. Я бы сказал, что в 85% случаев он работает правильно. Я думал, что я это фиксировал много раз, когда это не происходило в течение нескольких дней или даже недель. Затем, снова, это случается снова.

Я не могу найти сообщение на форуме, чтобы описать это поведение, поэтому я не нашел места для начала отладки. Как может строка состояния качаться сверху вниз, и представление не изменяет размер или не поворачивается или не реагирует каким-либо образом. Если бы я знал, как это сделать, у меня будет место для начала.

+0

Проблема заключается в ориентации устройства (FaceUp, faceDown и неизвестной ориентации), которые не могут быть установлены в симуляторе. Но на устройстве вы можете получить эту ориентацию. Распечатайте ориентацию устройства, а затем вы можете попробовать отладить. – Bharath

ответ

6

У меня возникла такая же проблема при добавлении подкласса UIWindow (в моем случае наложение статусной строки).

Решение было установить rootViewController этой новой UIWindow в наследнике UIViewController, который был -(BOOL)shouldAutorotate реализован. Это предотвратило поворот строки состояния, когда это не было сделано.

+0

Я никоим образом не изменяю строку состояния, поэтому я не верю, что это применимо. Я еще не испытал эту проблему сейчас, когда обновился для iOS7. В любом случае, это была некоторая аномалия с iOS6, и я могу списать ее как «исправленную». –

+0

Я столкнулся с этой проблемой, когда использую библиотеку Lookback. Он добавляет дополнительный UIWindow в класс UIApplication. Я выполнил подкласс UIViewController и переопределит 'shouldAutorotate'. работает как шарм. – Loozie

 Смежные вопросы

  • Нет связанных вопросов^_^