2013-08-12 17 views
9

Mój rootViewController jest UITabbarController i zawiera UINavigationController s.Dlaczego pasek stanu obraca się i widok pozostaje portretowy

W celu ograniczenia rotacji, od czasu iOS6, w niektórych, ale nie we wszystkich widokach, podzieliłem oba te kontrolery, aby respektowały odpowiedź typu "OnlyAutorotate" ich najwyższego lub widocznego widoku.

Wszystko działa idealnie ... przez większość czasu.

W jednym przypadku, począwszy od widoku (UITableviewController), który nie pozwala na obrót.

Pcham widok, który pozwala autorotate, obrócić do krajobrazu, a następnie z powrotem do portretu.

Następnie, gdy wyskoczy widok, wszystko wygląda dobrze.

Ale teraz, gdy obracam urządzenie, pasek stanu sam się obraca, pozostawiając puste miejsce u góry i zakrywające część lewej strony bieżącego widoku. Bieżący widok nie obraca się (tak jak nie powinien). Tylko pasek stanu obraca się, tam i z powrotem. Widok pozostaje responsywny, otrzymuje dotknięcia i działa normalnie, nie zmienia rozmiaru ani nie reaguje na obrót w żaden sposób (tak jak nie powinien).

To zachowanie będzie działać, dopóki nie zabiję i nie uruchomię ponownie aplikacji. Kiedy to się dzieje, nie znalazłem innego sposobu, aby to zatrzymać. Po ponownym uruchomieniu wszystkie działa poprawnie i będą działać poprawnie przez czas nieokreślony. Mogę siedzieć, pchać, strzelać, obracać się do moich serc bez żadnych problemów.

Nigdy nie byłem w stanie odtworzyć tego w symulatorze.

Zdarza się bez wyraźnego powodu, nie mogę tego zrobić. Powiedziałbym, że 85% czasu to działa poprawnie. Myślałem, że mam to naprawione wiele razy, kiedy nie występowało przez kilka dni, a nawet tygodni. Potem, niespodziewanie, dzieje się to znowu.

Nie mogę znaleźć postu na żadnym forum opisującym to zachowanie, więc nie znajduję nawet miejsca na rozpoczęcie debugowania. W jaki sposób pasek stanu może przechylać się z góry na bok, a widok nie zmienia rozmiaru ani nie obraca się, ani nie reaguje w żaden sposób. Gdybym wiedział, jak to się stało, będę miał miejsce na rozpoczęcie.

+0

Problem dotyczy orientacji urządzenia (FaceUp, FaceDown i nieznana orientacja), których nie można ustawić w symulatorze. Ale na urządzeniu można uzyskać tę orientację. Wydrukuj orientację urządzenia, a następnie spróbuj przeprowadzić debugowanie. – Bharath

Odpowiedz

6

Doświadczyłem tego samego problemu podczas dodawania podkategorii UIWindow (w moim przypadku nakładki paska stanu).

Rozwiązaniem było ustawienie rootViewController tego nowego UIWindow na podklasy UIViewController, która zaimplementowała -(BOOL)shouldAutorotate. Zapobiegło to obróceniu się paska stanu, gdy nie powinno.

+0

Nie zmieniam paska statusu w żaden sposób, więc nie sądzę, aby miało to zastosowanie. Problem ten nie pojawił się jeszcze, gdy zaktualizowałem system iOS7. Przy odrobinie szczęścia, była to anomalia z iOS6 i mogę odpisać jako "naprawiony". –

+0

Wpadłem na ten problem, gdy używam biblioteki podsumowania. Dodaje dodatkowe UIWindow do klasy UIApplication. Zaimplementowałem podklasę 'UIViewController' i nadpisuję' shouldAutorotate'. działa jak marzenie. – Loozie

Powiązane problemy