Поворот iOS 6 на портрет вверх ногами не работает для UITableViewController, iOS 5 в порядке

У меня есть приложение, которое поддерживает все четыре ориентации и отлично работает на iOS 5.

Однако в iOS 6 все мои классы UIViewController чередуются правильно, но мои классы UITableViewController не переключаются на PortraitUpsideDown. >.

Поддерживаемые ориентации для приложения включают все четыре варианта.

AppDelegate поддерживает все ориентации:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    //return (UIInterfaceOrientationMaskAll);
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}

Все мои классы представлений реализуют необходимые методы, в том числе представленные для iOS 6:

- (NSUInteger)supportedInterfaceOrientations
{
    //return (UIInterfaceOrientationMaskAll);
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}

- (BOOL)shouldAutorotate
{
    BOOL bReturn = [self shouldAutorotateToInterfaceOrientation:self.interfaceOrientation];
    return (bReturn);
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (YES);
}

Единственная разница, которую я могу найти, это способ отображения представлений.

UIViewController

InfoViewController *infoController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:[NSBundle mainBundle]];
[self presentModalViewController:infoController animated:YES];

UITableViewController

MenuViewController *menuController = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:[NSBundle mainBundle]];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:menuController];
[self presentModalViewController:navigationController animated:YES];

Не совсем уверен, как реализация повлияет на ротацию, и еще менее уверен, что с этим делать.

Мы будем очень признательны за любые рекомендации.


person GRW    schedule 27.02.2013    source источник
comment
Хм, мне только что пришло в голову, что я представляю UINavigationController, а не мой объект MenuViewController. Не уверен, что это реальная проблема или как связать поддерживаемые ориентации с объектом UINavigationController.   -  person GRW    schedule 27.02.2013


Ответы (1)


Основываясь на комментарии, который я сделал выше, я создал новый класс, наследуемый от UINavigationController, и добавил метод для определения поддерживаемых ориентаций.

- (NSUInteger)supportedInterfaceOrientations
{
    //return (UIInterfaceOrientationMaskAll);
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}

Затем, когда мне нужно представитьModalViewController для UITableViewController, я создаю объект своего нового класса RotationNavigationController.

Кажется, решил все мои проблемы.

person GRW    schedule 27.02.2013
comment
Это такой экономящий время ответ. Это действительно работает. У меня была эта проблема в течение нескольких дней. Большое спасибо, что поделились с нами своим ответом. - person SparkyNZ; 23.10.2013