Изменить поворот, если текущие видимые страницы UIPageViewController не поддерживают текущую ориентацию - PullRequest
1 голос
/ 21 декабря 2011

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

Пример: текущий VC UIPageViewController поддерживает все ориентации интерфейса, и пользователь переходит к следующему VC, который должен отображаться только в альбомной ориентации.

Я использовал шаблон Page-Base-Application-Template по умолчанию для тестирования и реализовал метод shouldAutorotateToInterfaceOrientation DataViewController следующим образом:

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

    if ([self.dataObject isEqualToString:@"February"]) {
        return NO;
    }

    return YES;
}

Я ожидал, что, если я перейду к контроллеру просмотра на февраль, экран развернется в горизонтальное положение, но он останется в портретном режиме. Интересная часть заключается в том, что shouldAutorotateToInterfaceOrientation вызывается, и NO возвращается, если я переезжаю на февраль-ВК.

Я также поиграл с проверкой ориентации в RootViewController, но безуспешно.

У меня сейчас нет идей. Любой совет будет высоко ценится, спасибо!

1 Ответ

0 голосов
/ 22 декабря 2011

Интересно то, что shouldAutorotateToInterfaceOrientation вызывается и NO возвращается, если Снимаю в феврале-ВК

В этом случае я бы предположил, что ваш единственный подход будет заключаться в подклассе UIPageViewController. Очевидно, он знает, что, по его мнению, должен быть ответ на shouldAutorotate, и вы не согласны с этим ответом, поэтому вам нужно будет предложить другой ответ.

Я не удивлен, узнав, что UIPageViewController ведет себя так, хотя - в конце концов, UINavigationController работает так же: если вы помещаете контроллер представления в стек контроллера навигации, и этот контроллер представления не позволяет текущую ориентацию устройства интерфейс не поворачивается в ориентацию, которую разрешает контроллер вида. Я работаю над этим, представляя представление (то, что раньше называлось модальным видом), которое заставляет устройство вращаться.

...