2012-09-13 17 views
8

Moja aplikacja nie uruchomi się automatycznie w symulatorze GM iOS 6, ale działa z tą samą wersją iOS na urządzeniu. Czy to może być błąd symulatora? Aplikacja używa przestarzałych metod autorotacji, ale działają one dobrze na samym urządzeniu, co sprawia, że ​​zastanawiam się, czy interfejsy API symulatora są inne?Autorotacja w iOS 6 w symulatorze różni się od rzeczywistego urządzenia z iOS 6

+0

Czy używasz aplikacji skompilowanej z iOS6 GM SDK? – rckoenes

+0

To jest dobre pytanie, skąd mam wiedzieć? Po prostu uruchamiam aplikację na urządzeniu z poziomu Xcode, na urządzenie z systemem iOS 6, używając Xcode 4.5, który ma ios6 SDK i symulator iOS 6 – johnbakers

+0

niż SDK iOS6. Wpadłem na ten sam problem, wykonując małe przepisanie w moim baseViewControllerze, dzięki czemu mogłem dodać nowe metody rotacji, tym samym naprawiając je w symulatorze. Przetestowaliśmy to przed dodaniem nowego kodu obrotu i wydawało się, że działa dobrze na urządzeniu. – rckoenes

Odpowiedz

11

To co dodałem, aby moja aplikacja działa ponownie:

// Tell the system what we support 
- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskAllButUpsideDown; 
} 

// Tell the system It should autorotate 
- (BOOL) shouldAutorotate { 
    return YES; 
} 

// Tell the system which initial orientation we want to have 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 
+0

Gdzie konkretnie je dodałeś? Jeśli dodaję je do mojego delegata aplikacji lub kontrolera widoku, to nadal nie działa. – Jackson

+1

To powinno się znaleźć w 'UIViewController', być może będziesz musiał trochę go poprawić. – rckoenes

+1

Upewnij się również, że plik Info.plist obsługuje wszystkie potrzebne rotacje. – johnbakers

0

dodanie poniższych nie wystarczyło, aby pracować na symulatorze:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskAllButUpsideDown; 
} 
- (BOOL) shouldAutorotate { 
    return YES; 
} 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 

Aby to działa, również dodano do funkcji didFinishLaunchingWithOptions klasy appDelegate:

self.window.rootViewController = viewController; 

I st opped otrzymuję następujący błąd po tym dodatkowo: Spodziewane są okna aplikacji, aby mieć kontroler widoku głównego na końcu uruchomieniu aplikacji

15

Należy nadal pracować z przestarzałych metod obracać, ale trzeba dodać po do sposobu didFinishLaunchingWithOptions::

self.window.rootViewController = yourRootViewController; 

mówi główny window co widok kontroler do wysyłania powiadomień do obracają. Jest to nowość w pakiecie SDK iOS 6.0.

+0

Czy to nie było nowe w systemie iOS5? Mam na myśli, że zmienili to w iOS5, czy jestem w błędzie? –

+0

To było nowe w iOS5, ale można pozornie bezpiecznie zignorować ostrzeżenia o wycofaniu. W iOS6 nie można ich zignorować, ponieważ prowadzi to do opisanego problemu z rotacją starszą. Miałem dokładnie ten sam problem wcześniej ... – Roger

0
- (BOOL)shouldAutorotate { 
    return NO; 
} 

i ustaw obsługiwane obroty dla kontrolera widoku głównego w pliku plist aplikacji tylko na portret.