Невозможно управлять ориентацией с помощью нескольких контроллеров представления

StackOverflow https://stackoverflow.com/questions/1954298

Вопрос

Я пытаюсь создать приложение для iPhone с двумя подпредставлениями в главном окне.Каждое представление имеет свой собственный подкласс UIViewController, связанный с ним.Кроме того, в реализации каждого контроллера я добавил следующий метод:

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

Таким образом, я ожидаю, что обе точки зрения будут реагировать на изменения в ориентации.Однако, это не так.Только первый вид, добавленный в главное окно приложения, реагирует на ориентацию.(Если я поменяю порядок добавления представлений, то ответит только другое представление.Другими словами, любой из них будет работать, но только по одному.)

Почему это?Разве невозможно обрабатывать изменения ориентации более чем одного вида?

Спасибо!

РЕДАКТИРОВАТЬ:У кого-то еще был этот вопрос, поэтому я копирую свое решение здесь:

Мне удалось решить эту проблему, предоставив корневое представление и контроллер корневого представления с помощью метода «shouldAutoRotate...» и добавив другие мои представления в качестве подпредставлений к корневому представлению.Подпредставления наследуют поведение автоматического поворота, и связанные с ними контроллеры представлений не должны переопределять «shouldAutoRotate...»

Это было полезно?

Решение 2

Наконец собираюсь опубликовать свое решение здесь:

По сути, все сводилось к наличию «корневого» UIViewController.При этом у меня есть метод:

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

Я также добавил представления, которые хотел автоматически повернуть, в качестве подпредставлений в UIView этого корневого UIViewContoller.Эти подпредставления также имеют контроллеры представлений, но нет переопределить shouldAutorotateToInterfaceOrientation.Фактически, добавление этого метода к этим контроллерам представления, похоже, не имеет никакого эффекта.Только контроллер корневого представления shouldAutorotateToInterfaceOrientation кажется, работает, и все подпредставления вращаются правильно.

Другие советы

Вам необходимо переопределить метод mustAutorotateToInterfaceOrientation на всех трех имеющихся у вас контроллерах.

вы можете попытаться реализовать этот метод в классе, представление которого содержит оба представления вашего viewController.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top