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

По принцип се опитвам да възпроизведа основната функционалност на приложението „Веднъж“. Имам изглед от камера и друг изглед с изглед на текст върху него.

Добавям и двата изгледа към прозореца. Всичко е наред засега.

[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