В основном я пытаюсь воспроизвести основные функции приложения «Сразу». У меня есть вид с камеры и другой вид с текстовым представлением.
Я добавляю оба вида в окно. Пока все хорошо.
[window addSubview:imagePicker.view];
[window addSubview:textViewController.view];
Я так понимаю, что UIImagePickerController не поддерживает автоповорот, поэтому обрабатываю вручную, просматривая UIDeviceOrientationDidChangeNotifications и применяя необходимые преобразования к textViewController.view.
Теперь проблема в клавиатуре. Если я ничего не делаю, он просто остается в портретном режиме. Я могу заставить его вращаться, добавив следующий код в обработчик уведомлений.
[[UIApplication sharedApplication] setStatusBarOrientation:interfaceOrientation];
[textView resignFirstResponder];
[textView becomeFirstResponder];
Однако следующий простой тест приводит к странному поведению.
- Запустите приложение в портретном режиме.
- Поверните устройство на 90 градусов по часовой стрелке.
- Поверните устройство на 90 градусов против часовой стрелки (в исходное положение).
- Поверните устройство на 90 градусов по часовой стрелке.
После шага 4 вместо клавиатуры в ландшафтном режиме отображается клавиатура в портретном стиле, скошенная, чтобы соответствовать рамке клавиатуры в альбомной ориентации.
Возможно, мой подход неверен с самого начала. Мне было интересно, смог ли кто-нибудь надежно заставить клавиатуру изменить свою ориентацию в ответ на setStatusBarOrientation.