Невозможно управлять ориентацией с несколькими контроллерами представления - PullRequest
2 голосов
/ 23 декабря 2009

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

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

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

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

Спасибо!

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

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

Ответы [ 3 ]

2 голосов
/ 23 декабря 2009

Вам необходимо переопределить метод shouldAutorotateToInterfaceOrientation на всех трех ваших контроллерах.

2 голосов
/ 06 марта 2010

Наконец-то выложу свое решение здесь:

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

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

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

0 голосов
/ 23 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...