【问题标题】:How to pull up a UIKeyboard without a UITextField or UITextView?如何在没有 UITextField 或 UITextView 的情况下调出 UIKeyboard?
【发布时间】:2009-09-03 21:41:29
【问题描述】:

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

我想知道如何轻松调出 UIKeyboard? 是否有官方文档可以在不使用 UITextView 的 UITextField 的情况下调出 UIKeyboard?

【问题讨论】:

标签: iphone uikit uikeyboard


【解决方案1】:

如果你继承 UIResponder,并声明 UIKeyInput 协议,当你成为 firstResponder 时,键盘会出现。

请参阅UIKeyInput protocol here

让我感到困惑的一件事是您需要覆盖 canBecomeFirstResponder 消息。

【讨论】:

  • 只有 UIView 子类,而不仅仅是 any UIResponder 子类。我试图让我的 AppDelegate(一个 UIResponder)子类,显示一个键盘但失败了。
  • UIView 的子类之后,UITextfield 之间有什么不同?它们都必须添加到屏幕上,然后成为第一响应者,显示键盘。
【解决方案2】:

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

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

【讨论】:

【解决方案3】:

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

希望对您有所帮助。

【讨论】:

    【解决方案4】:

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

    #define TEXT_FRAME                 -50,-50,0,0
    
    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(TEXT_FRAME)];
    

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

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

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 我不认为 UIKeyboard 正式暴露在 SDK 中,所以也许为了“合法”你必须使用隐藏的 UITextField。
      • @David - 所以那不可能?
      • 您发布的代码不起作用。虽然它可能有效,但编译器会让您知道您无法访问 UIKeyboard 类。
      猜你喜欢
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 2014-09-08
      • 2015-10-18
      相关资源
      最近更新 更多