如何在没有UITextField或UITextView的情况下启动UIKeyboard?

时间:2009-09-03 21:41:30

标签: iphone uikit uikeyboard

我目前正在为iPhone和iPod touch开发OpenGL ES游戏。

我想知道如何轻松拉起UIKeyboard? 是否有官方记录可以在不使用UITextField UITextView的情况下启动UIKeyboard?

5 个答案:

答案 0 :(得分:19)

如果您继承了UIResponder并声明了UIKeyInput协议,那么当您成为第一个响应者时,键盘就会出现。

请参阅UIKeyInput protocol here

让我失望的一件事是你需要覆盖canBecomeFirstResponder消息。

答案 1 :(得分:14)

这不是“官方”的可能 - 在遵守Apple的指导原则的情况下,您根本无法访问UIKeyboard对象。

创建一个不可见的UITextField,然后调用[textField becomeFirstResponder]就可以了 - 你甚至可以先将UITextField子类化,然后覆盖委托方法textField:shouldChangeCharactersInRange:,将文本输入重定向到你想要的位置。

答案 2 :(得分:3)

确实有可能。我曾经为此苦苦挣扎。 UIKeyInput协议可用于在不使用UITextField或UITextView的情况下拉出键盘。但是它仅适用于iOS 3.2及更高版本。这是一个tutorial

希望有所帮助。

答案 3 :(得分:1)

我通过将文本框的框架放在可见屏幕之外来显示键盘而没有任何可见的UITextField:

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

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

当我设置“第一响应者”时,键盘变为可见而没有任何可见的输入区域:

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

我后来放弃了这个想法。但是,我不知道它是否符合Apple指南。

答案 4 :(得分:0)

我没有尝试过,但是http://www.cocoadev.com/index.pl?UIKeyboard显示了一些看起来应该有用的代码。

相关问题