Как инициализировать посмотреть на ориентацию интерфейса?

Проблема в том, что я запускаю электронную почту в приложении и запускаю клавиатуры (через UITextFields), и они появляются в моем альбомном приложении. Я могу повернуть его портрет, затем снова повернуть пейзаж, наблюдая анимацию черных углов вращения, которая возникает, когда приложение поворачивается от портрета к ландшафту. Поскольку я заблокировал любую ориентацию, кроме ландшафта, в своем методе shouldAutorotateToInterfaceOrientation (), само представление не вращается, и это здорово. Однако, когда я добавляю эти представления, приложение продолжает думать, что они портретные, о чем свидетельствует клавиатура UITextField и ориентация электронной почты в приложении, если я не поверну в портретную ориентацию, а затем обратно в альбомную ориентацию (что вызывает метод автоматического поворота, возвращающий значение true. [12161 Любые предложения о том, как я могу заставить это приложение знать, что оно уже в ландшафте, чтобы начать, когда я добавить представления?

Обновление: я пытался установить ориентацию строки состояния, но она не работает для меня. Я не знаю, есть ли что-то с тем фактом, что я удаляю, а затем добавляю представления в приложение, что сбивает с толку его понимание ориентации. Знаете ли вы, как объекты Apple, такие как UITextField и почта в приложении, определяют, какую ориентацию показывать? Они просто опрашивают общую ориентацию приложения? Странно для меня то, что, когда я удаляю и добавляю новые виды, кажется, что эти яблочные виджеты, которые я наклонил телефон, чтобы изменить их на альбомную, внезапно возвращаются к портретному изображению. то есть это общая последовательность событий:

1) приложение в альбомной ориентации, триггерная клавиатура, на нем изображен портрет

2) устройство наклона, чтобы заставить его перейти в альбомную ориентацию. закройте и откройте клавиатуру, и она в альбомной ориентации.

3) удалите и добавьте некоторые виды.

4) снова вызвать клавиатуру, она отображается в портретной ориентации

1
задан Joey 13 August 2010 в 17:06
поделиться

3 ответа

Интересно, что я обнаружил что установки ориентации строки состояния при запуске было недостаточно. Наблюдая за значением поля, я заметил, что оно сбрасывалось в портретное состояние в разное время, например, при возврате после отмены почты в приложении. Я обнаружил, что выполнение нескольких вызовов для установки строки состояния, похоже, решает проблему. Спасибо за вклад, mbehan.

0
ответ дан 2 September 2019 в 22:11
поделиться

Удаление / добавление представлений не должно изменять ориентацию строки состояния; Насколько мне известно, по умолчанию используется ориентация контроллера представления, если вы не указали ее явно (и тогда вы должны быть осторожны, потому что контроллеры представления сбрасывают ее). Вы можете попробовать использовать UIStatusBarStyleBlackTranslucent и установить UIViewController.wantsFullScreenLayout в своих VC, чтобы увидеть, что происходит.

(Раньше я замечал, что когда я добавляю вид в окно напрямую, поверх портретного просмотра. Похоже, это работает во всех других случаях ...)

Какая у вас реализация shouldAutorotateToInterfaceOrientation:?

0
ответ дан 2 September 2019 в 22:11
поделиться

[UIApplication setStatusBarOrientation:animated:] должно дать вам то, что вы хотите.

1
ответ дан 2 September 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: