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.
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