iOS6: supportedInterfaceOrientations nie działa (jest wywoływany, ale interfejs nadal się obraca)
W mojej aplikacji mam wiele widoków, niektóre widoki muszą obsługiwać zarówno portret, jak i krajobraz, podczas gdy inne widoki muszą obsługiwać tylko portret. Tak więc w podsumowaniu projektu wybrałem wszystkie orientacje.
Poniższy kod działał, aby wyłączyć tryb krajobrazu na danym kontrolerze widoku przed iOS 6:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
Ponieważ shouldAutorotateToInterfaceOrientation było przestarzałe w iOS6, zastąpiłem powyższe:
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMask.Portrait;
}
Ta metoda jest poprawnie wywoływana, gdy pojawia się widok (mogę ustawić punkt przerwania, aby to zapewnić), ale interfejs nadal obraca się do trybu poziomego, niezależnie od tego, że zwracam maskę tylko w trybach portretowych. Co ja robię źle?
Wydaje się, że obecnie niemożliwe jest zbudowanie aplikacji, która ma inne wymagania orientacyjne na widok. Wydaje się, że przestrzega tylko orientacji określonych w podsumowaniu projektu.