проблема setOrientation - PullRequest
       30

проблема setOrientation

1 голос
/ 13 ноября 2009

У меня действительно странная проблема с ориентацией. У меня есть последовательность контроллеров представления под контроллером навигации. Один из них может иметь любую ориентацию. Когда я покидаю ориентацию, я должен использовать setOrientation. Самое смешное, что вращение происходит по мере перехода на следующую страницу. Обычно это не проблема, за исключением одного случая - от UIDeviceOrientationPortraitUpsideDown до обычного приводит к тому, что все мои верхние смонтированные элементы перемещаются вверх примерно на восьмую часть страницы.

Думаю, я могу это исправить тремя способами:

  1. Каким-то образом отделить setOrientation от моего вызов pushViewController (поэтому новый вид не нужно переворачивать)
  2. Установите мои пункты, чтобы быть закреплены на верхней части устройства в лучшем виде (Я проверил, и они кажутся)
  3. Сбросить размерность Y на элементах Метод ViewDidLoad, но это кажется неправильным.

Вот мой новый взгляд на код стека:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 

ResultSelect_ViewController *resultSelect = [[ResultSelect_ViewController alloc] initWithNibName:@"ResultSelect" bundle:nil];
[self.navigationController pushViewController:resultSelect animated:YES];

Кто-нибудь еще находит странным, что симулятор не позволяет вам тестировать перевернутый портрет?

Ответы [ 3 ]

2 голосов
/ 20 ноября 2009

Просто чтобы заметить: Apple начала использовать статический (возможно, даже динамический) анализатор и блокирует доступ приложений, использующих частные методы (например, setOrientation:), в магазин. Произошло с моим другом на прошлой неделе.

Вы пытались собрать с iPhone OS 3.0 и полагаться только на shouldRotateToInterfaceOrientation:? Поведение кажется фиксированным (по сравнению с реализацией в 2.x) и - по крайней мере для меня - делает свою работу.

1 голос
/ 18 ноября 2009

Обычно вы не поддерживаете перевернутую ориентацию. Кажется, это стандартное поведение приложений Apple и имеет смысл. Перевернутый случай не очень полезен и может привести пользователя в замешательство.

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

0 голосов
/ 26 ноября 2009

Способ избежать ошибки поворота при повороте вверх ногами на портрет - это не делать этого. Вместо этого поверните дважды, останавливаясь на полпути (скажем, UIDeviceOrientationLandscapeRight). Вопрос времени не в том, чтобы использовать режим сна, а в том, чтобы реализовать didRotateFromInterfaceOrientation и запустить второй поворот (или перейти к следующему просмотру) в этой точке.

...