Подтвердить что ты не робот

Как отобразить клавиатуру iPhone/iPad в полноэкранном приложении OpenGL ES

Я работаю над приложением, которое в какой-то момент требует ввода с клавиатуры. Мое приложение использует OpenGL ES для отображения, и у меня есть собственная графическая среда, которая может отображать текстовое поле и знает, как управлять курсором и отображать текст. Этот код отлично работает на других платформах с физической клавиатурой, например Windows и OS X.

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

Я видел этот вопрос, но я не мог заставить отображаемое там решение работать. Не уверен, что это потому, что я делаю что-то не так, или потому, что он не работает в текущих выпусках iOS.

EDIT: было бы полезно указать на рабочее приложение с исходным кодом, которое программно создает любой элемент пользовательского интерфейса и отображает его поверх экрана GL ES. Я думаю, что смогу понять остальное, если я понял, что эта часть понята.

4b9b3361

Ответ 1

Я не могу указать вам на рабочий пример, но я верю, что вы ищете http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIKeyInput_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UIKeyInput

Основная идея заключается в том, что вы реализуете протокол UIKeyInput для объекта UIResponder, например UIView. Сделайте вид первогоResponder, и клавиатура должна автоматически появиться. Протокол UIKeyInput дает вам простую обратную связь для вставки символа и удаления символа, когда пользователь нажимает кнопки на клавиатуре.

Это не рабочий код, но он выглядит примерно так:

@interface MyKeyboardView : UIView <UIKeyInput>
@end

@implementation MyKeyboardView
- (void)insertText:(NSString *)text {
    // Do something with the typed character
}
- (void)deleteBackward {
    // Handle the delete key
}
- (BOOL)hasText {
    // Return whether there any text present
    return YES;
}
- (BOOL)canBecomeFirstResponder {
    return YES;
}
@end

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

[myView becomeFirstResponder];

или отменить первый ответчик, чтобы отклонить клавиатуру

[myView resignFirstResponder];

Изменить: убедитесь, что ваше представление прикреплено к иерархии представлений, или это, вероятно, ничего не сделает.