我正在制作一个 OpenGL ES 应用程序,我正在尝试研究如何将部分 UIKit
GUI 合并到 OpenGL ES 处理的 View 上。
在 EAGLView
类的初始化方法中,我用这个来设置 UITextField
:
add_name_field = [[UITextField alloc] initWithFrame: CGRectMake(10, 10, [UIScreen mainScreen].bounds.size.width, 50)];
在 drawRect 方法中的某处,为我的游戏渲染和处理所有内容:
[add_name_field becomeFirstResponder];
[self insertSubview: add_name_field atIndex:0];
我可以确认调用了此代码,因为我使用 NSLog
对其进行了测试,但是当它运行时,文本字段不会显示在游戏的 OpenGL View 上。如果我将代码放在 init 方法中,文本字段会在游戏开始时通过键盘正确显示。
那么如何让它在 drawRect 方法中工作呢?
感谢您的任何答复。在此期间,我将为委托(delegate)编写一些代码。
最佳答案
感谢您提供所有其他答案,但我找到了解决方案。
这是一个简单的解决方案。我只是将 addSubView 方法移动到 EAGLView 类的初始化。在我将文本字段设置为第一响应者之前,键盘不会显示。当我完成它时,我可以简单地清除文本并再次使 EAGLView 类成为第一响应者,然后再次隐藏它。
这样我就可以简单地使用键盘为我的游戏获取文本输入,在输入时显示文本并在之后隐藏它。
关于iphone - 添加为 subview 时 UITextField 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3603880/