Принудительная портретная ориентация для контроллера представления не работает

Мое приложение поддерживает все ориентации интерфейса, но я хочу, чтобы определенный вид отображался только в книжной ориентации. У меня есть эта реализация подкласса UINavigationController:

@implementation CustomNavigationController

- (BOOL)shouldAutorotate
{
   return [[self.viewControllers lastObject] shouldAutorotate];
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
   return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
   return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

// More methods

@end

Затем для его корневого контроллера представления я реализовал:

- (void)viewWillAppear:(BOOL)animated
{
   [super viewWillAppear:animated];

   NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
   [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
}

- (BOOL)shouldAutorotate
{
    return YES;
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
   return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
   return UIInterfaceOrientationPortrait;
}

Это предотвращает поворот контроллера представления в альбомную ориентацию, когда он находится в портретной ориентации, но когда я перехожу к этому представлению, поскольку устройство уже находится в альбомной ориентации, и я ранее был в представлении, которое поворачивается в альбомную ориентацию, я вижу это вид в пейзаже, а также.

Как я могу решить этот сценарий?


person AppsDev    schedule 11.12.2015    source источник
comment
попробуй поставить свой viewWillAppear код на viewDidAppear...может это исправит?   -  person Tj3n    schedule 11.12.2015
comment
@ Tj3n Я только что попробовал, но результат тот же...   -  person AppsDev    schedule 11.12.2015
comment
может быть, ваш vc встроен в панель вкладок или панель навигации? проверьте эту ссылку   -  person Tj3n    schedule 11.12.2015