iphone - 如何在全屏 OpenGL ES 应用程序上显示 iPhone/iPad 键盘

标签 iphone ios cocoa-touch uikit

我正在开发一款有时需要键盘输入的应用。我的应用程序使用 OpenGL ES 进行显示,我有自己的图形框架可以显示文本字段,并且知道如何管理光标和呈现文本。此代码在其他具有物理键盘的平台上运行良好,例如 Windows 和 OS X。

要让我的应用程序的 iOS 版本正常工作,我需要的只是能够以编程方式上下移动键盘,并将用户的按键事件发送到我的 View 中,以便我可以将它们路由到我的框架自己的事件系统。

我看到了this question ,但我无法使那里描述的解决方案起作用。不确定是因为我做错了什么,还是因为它不适用于当前的 iOS 版本。

编辑:指出一个工作应用程序的源代码会很有帮助,该应用程序以编程方式创建任何 UI 元素并将其显示在 GL ES 屏幕的顶部。如果我理解了那部分,我想我可以弄清楚其余部分。

最佳答案

我无法为您指出一个有效的示例,但我相信您正在寻找的是这里 http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIKeyInput_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UIKeyInput

基本思想是在UIResponder 对象(例如UIView)上实现UIKeyInput 协议(protocol)。使 View 成为 firstResponder,键盘应该会自动出现。当用户按下键盘上的按钮时,UIKeyInput 协议(protocol)会为您提供有关插入字符和删除字符的简单反馈。

这不是工作代码,但它看起来像这样:

@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's any text present
    return YES;
}
- (BOOL)canBecomeFirstResponder {
    return YES;
}
@end

当view被attched时,让它成为显示键盘的第一响应者

[myView becomeFirstResponder];

或辞去第一响应者以关闭键盘

[myView resignFirstResponder];

编辑:确保您的 View 附加到 View 层次结构,否则这可能不会做任何事情。

关于iphone - 如何在全屏 OpenGL ES 应用程序上显示 iPhone/iPad 键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253477/

相关文章:

ios - 在Swift中比较字符串

objective-c - UINavigationController 在 TableView 上使用分组?

iphone - 带有 NSMutableArray 的 UITableView

iPhone 键盘下一个按钮

ios - 接受小数

iphone - ASIHTTPRequest gzip 解压

ios - 快速从 TableView 中收集数据

iPhone - 如何检测 NSUserDefaults standardUserDefaults 中是否存在 key

ios - 该应用在 Payload : appID, expirationDate, isOpen 中引用了非公共(public)选择器

iphone - Xcode - UIImageView 在边缘停止