2009-09-03 5 views
12

В настоящее время я разрабатываю игру OpenGL ES для iPhone и iPod touch.Как подтянуть UIKeyboard без UITextField или UITextView?

Мне было интересно, как я могу легко подтянуть UIKeyboard? Есть ли официальный, задокументированный возможность подтянуть UIKeyboard без использования UITextField UITextView?

+0

Возможный дубликат [Как отобразить клавиатуру iPhone/iPad в полноэкранном приложении OpenGL ES] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard- over-a-full-screen-opengl-es-app) – JosephH

ответ

14

Это не «официально» возможно - вы не можете получить доступ к объекту UIKeyboard вообще, оставаясь в руководствах Apple.

Создание невидимого UITextField, то вызов [textField becomeFirstResponder] будет делать эту работу - вы можете даже подкласс UITextField, а затем переопределить метод делегата textField:shouldChangeCharactersInRange: для перенаправления ввода текста, где вы хотите, чтобы идти.

+0

См. Более современный ответ от @john, используя API 3.2+. –

+2

__Этот ответ теперь неверен. [См. Здесь пример того, как это сделать] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard-over-a-full-screen-opengl-es- app) – bobobobo

0

Я не пробовал, но http://www.cocoadev.com/index.pl?UIKeyboard показывает код, который выглядит так, как будто он должен работать.

+1

Я не думаю, что UIKeyboard официально отображается в SDK, поэтому, возможно, чтобы быть «законным», вы должны использовать скрытый UITextField. –

+0

@ Давид. Значит, тогда это невозможно? – Kriem

+0

Код, который вы опубликовали, не работает. Хотя это может быть действительно, компилятор сообщит вам, что вы не можете получить доступ к классу 'UIKeyboard'. – FreeAsInBeer

1

Я показал клавиатуру без каких-либо видимых UITextField, поместив кадр моего TextField в из видимого экрана:

#define TEXT_FRAME     -50,-50,0,0 

self.textField = [[UITextField alloc] initWithFrame:CGRectMake(TEXT_FRAME)]; 

Когда я установил «первый ответчик» клавиатура становится видимой без какой-либо видимой области ввода:

// show the keyboard  
[self.textField becomeFirstResponder]; 

Я позже отказался от идеи. Однако я не знаю его соответствия рекомендациям Apple.

19

Если вы подклассифицируете UIResponder и объявляете протокол UIKeyInput, клавиатура появится, когда вы станете первымResponder.

См. UIKeyInput protocol here.

Одна вещь, которая помогла мне в том, что вам нужно переопределить сообщение canBecomeFirstResponder.

+1

Подклассы 'UIView', а не только _any_ подкласс UIResponder. Я попытался сделать свой подкласс AppDelegate (UIResponder), показать клавиатуру и не удалось. – paulvs

+0

После подкласса 'UIView', в чем разница между' UITextfield'? все они должны быть добавлены на экран, а затем стать первым ответчиком, показать клавиатуру. – al03

3

Это действительно возможно. Я сам много боролся с этим. Протокол UIKeyInput может использоваться для вытягивания клавиатуры без использования UITextField или UITextView. Однако он доступен только в iOS 3.2 и выше. Вот tutorial.

Надеюсь, что это поможет.

Смежные вопросы