Проблемы с ориентацией iPad при переключении между двумя режимами просмотра и наоборот. - PullRequest
0 голосов
/ 24 марта 2011

Я создаю простое приложение с двумя контроллерами представления, я тестирую код с помощью симулятора iPhone, кажется, что все работает нормально. Проблема возникает, когда я поворачиваюсь из Портрета в Пейзаж или из Пейзажа в портрет. Это логика приложения, приложение всегда запускается в Portrait, у меня есть кнопка, чтобы в первом View переключиться с View1 на View2. На View2 у меня есть еще одна кнопка для переключения с View2 обратно на View1. Допустим, я нахожусь в портретном режиме, я переключаюсь с View1 на View2, затем поворачиваю iPad (в симуляторе) с Portrait на Landscape, когда я переключаюсь с View2, то есть, чтобы вернуться к View1. Экран / вид View1 отображается в режиме Portrait, а экран View2 отображается в фоновом режиме, т.е. часть View2 отображается в фоновом режиме, я полагаю, поскольку View1 изначально находился в режиме Portrait.

Вопрос в том, был ли у кого-то этот вопрос раньше, и если да, то какой-либо код для решения этой проблемы. Во-вторых, как я могу определить в коде, в какой ориентации находится устройство и в какой ориентации находится вид.

Этот метод заключается в переключении в режим просмотра 2:

-(IBAction) switchToView2: (id) sender {

SecondViewController *myViewController = [[SecondViewController alloc]        initWithNibName:@"SecondViewController" bundle:nil];

[self.view addSubview: myViewController.view];
[UIView commitAnimations];
}

Этот метод заключается в переключении обратно на View1:

-(IBAction) switchBackToView1:(id) sender {

[self.view removeFromSuperview];
[UIView commitAnimations];

}

Ответы [ 3 ]

1 голос
/ 02 июня 2011

Из вашего кода:

[self.view addSubview: myViewController.view];

Это заставляет меня поверить, что ваши 2 представления являются подпредставлением myViewController.view. что объясняет, почему они оба показывают в то же время. было бы целесообразно иметь отдельные контроллеры представлений для разных представлений.

0 голосов
/ 24 марта 2011

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

Или, если у вас уже есть обработка, это может быть из-за того, как выдобавление / удаление ваших просмотров.Для лучшей обработки, я думаю, вы должны попробовать UINavigationController способ управления представлениями.то есть вместо addSubview: и removeFromSuperview: вы должны использовать pushViewController:animated: и popViewController:animated:.

И да, как сказал Йос, [UIView commitAnimations] не требуется в вашем коде выше.

Надеюсь, это поможет.

0 голосов
/ 24 марта 2011

Сначала я думаю

[UIView commitAnimations];

не обязательно:

от Apple

commitAnimations Отмечает конец блока анимации начала / фиксации и назначает анимацию для выполнения.

секунду в Интерфейсном Разработчике вы установили свойство вашего контроллера в альбомную ориентацию?

Надеюсь, что эта справка (извините за мой плохой английский)

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