Кажется, у меня проблемы с моим приложением для iOS.
Его целью развертывания является iOS5.0, однако я использую SDK для iOS 6.0.
В моем контроллере представления у меня есть:
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
Это отлично работает при работе в симуляторе iOS5. Вид не будет вращаться в ландшафтном режиме или вверх ногами.
Однако в симуляторе IOS6 (и на устройстве) он будет продолжать вращаться.
Я использовал NSLog
, чтобы проверить, вызывается ли -supportedInterfaceOrientations
, и это происходит дважды, однако он по-прежнему вращается в LandScape (вправо или влево).
Что я делаю неправильно?
Я также расширил UINavigationController
(My Root View Controller), включив в него следующее:
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
@end
Но пока безуспешно.
Спасибо.
Редактировать
Согласно ответу Мэтта. Мне также нужно было расширить UITabBarController реализацией, аналогичной моему UINavigationController, и это сработало.
Надеюсь, это поможет кому-то еще.