Принудительная ориентация клавиатуры и суб-представления на iOS (iPad / iPhone) - PullRequest
0 голосов
/ 31 марта 2011

Мы просто вводим пользовательский ввод в нашу игру, чтобы пользователь мог вводить адрес электронной почты и т. Д. Вся игра - Gl без интерфейса iOS вообще.EAGLView не меняет ориентацию, он всегда в портретной ориентации, однако игра в альбомной ориентации, и мы обрабатываем это с помощью преобразования камеры.

Мы хотим вызвать клавиатуру iOS и наложить UITextView для ввода текста,UITextView - это подпредставление EAGLView.Очевидно, он и клавиатура отображаются в портретной ориентации, когда EAGLView находится в портретной ориентации.

Без необходимости изменять EAGLView на альбомную ориентацию, есть ли способ заставить UITextView и клавиатуру отображаться в альбомной ориентации?

Если я изменю ориентацию EAGLView на альбомную, чтобы это работало, есть ли какой-нибудь удар по производительности?Я несколько раз читал, что ориентация вида GL на что-либо, кроме портретного представления по умолчанию, приведет к снижению производительности, хотя я не могу найти каких-либо убедительных доказательств этого.

Спасибо,

1 Ответ

3 голосов
/ 01 апреля 2011

Мы думаем, что нашли решение для этого.Мы делаем две вещи: одну для клавиатуры и другую для UITextView.

Для клавиатуры мы устанавливаем ориентацию строки состояния.Клавиатура следует, когда она установлена.

[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;

И для правильной ориентации UITextView мы применяем преобразование к подпредставлениям нашего EAGLView, которое в данном случае является только UITextView, как показано ниже:.

    CGAffineTransform aTransform = CGAffineTransformMakeRotation(M_PI / 2);
    [glView UpdateSubViewTransforms:aTransform];        

Это буквально добавляет поворот на 90 градусов к виду.

Это было проверено на iPad и iPhone 4 с iOS 4.3 и на iPhone 3G с iOS 3.13.

...