Ручное изменение ориентации клавиатуры для вида, который находится поверх вида с камеры

В основном я пытаюсь воспроизвести основные функции приложения «Сразу». У меня есть вид с камеры и другой вид с текстовым представлением.

Я добавляю оба вида в окно. Пока все хорошо.

[window addSubview:imagePicker.view];
[window addSubview:textViewController.view];

Я так понимаю, что UIImagePickerController не поддерживает автоповорот, поэтому обрабатываю вручную, просматривая UIDeviceOrientationDidChangeNotifications и применяя необходимые преобразования к textViewController.view.

Теперь проблема в клавиатуре. Если я ничего не делаю, он просто остается в портретном режиме. Я могу заставить его вращаться, добавив следующий код в обработчик уведомлений.

[[UIApplication sharedApplication] setStatusBarOrientation:interfaceOrientation];
[textView resignFirstResponder];
[textView becomeFirstResponder];

Однако следующий простой тест приводит к странному поведению.

  1. Запустите приложение в портретном режиме.
  2. Поверните устройство на 90 градусов по часовой стрелке.
  3. Поверните устройство на 90 градусов против часовой стрелки (в исходное положение).
  4. Поверните устройство на 90 градусов по часовой стрелке.

После шага 4 вместо клавиатуры в ландшафтном режиме отображается клавиатура в портретном стиле, скошенная, чтобы соответствовать рамке клавиатуры в альбомной ориентации.

Возможно, мой подход неверен с самого начала. Мне было интересно, смог ли кто-нибудь надежно заставить клавиатуру изменить свою ориентацию в ответ на setStatusBarOrientation.


person XKR    schedule 12.03.2010    source источник


Ответы (1)


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

person Stefan Arentz    schedule 12.03.2010