UITextField 始终是第一响应者

Posted

技术标签:

【中文标题】UITextField 始终是第一响应者【英文标题】:UITextField that is always first responder 【发布时间】:2013-02-11 23:02:53 【问题描述】:

我有一个 ViewController,它只是一个文本字段、一个下一步按钮和一个后退按钮。我希望 文本字段始终可编辑,同时键盘始终存在。我还想自定义键盘成为我自己的,但是一旦我弄清楚这部分就会出现。

编辑:在我的情况下,键盘实际上只是一个带有 10 位数字和一个退格键的小键盘

解决此问题的最佳方法是什么?我一直在努力让 UITextField 与自定义键盘视图一起使用,然后在视图加载时使其成为第一响应者,但也许有更好的方法。

提前致谢!

【问题讨论】:

什么是自定义键盘?你真的需要做一个吗?我使用自定义键盘的每一个应用程序都非常糟糕。仅键盘就让我很反感,以至于我删除了该应用程序。 其实它只是一个键盘。我只需要数字。另外,请查看 Scorekeeper XL 应用程序。我觉得他的键盘很漂亮。 我会看看那个应用,但如果你只需要一个小键盘和退格键盘,那么你可以在本机设置键盘样式来做到这一点。 如果您只想要小键盘,则将文本字段的keyboardType 设置为UIKeyboardTypeNumberPad 是的,我明白,我真正想知道的是如何让键盘在视图出现时就在那里,而不是在它出现的第二秒滑动 【参考方案1】:

要使 UITextField 始终使用键盘...

viewDidAppearviewWllAppear 函数中执行此操作...

[self.textField becomeFirstResponder];

这将使键盘出现并且文本字段响应输入。

要关闭键盘,您必须运行...

[self.textField resignFirstResponder];

只要你不运行它,它就会保持键盘焦点。

【讨论】:

不需要实现textFieldShouldReturn方法。这与键盘是否消失无关。 啊,好点子。由于其他原因,我倾向于覆盖它,但我也是这么想的。【参考方案2】:

在视图控制器的viewWillAppear: 方法中,您可以在文本字段上调用becomeFirstResponder。这将使键盘在视图控制器出现时自动出现。只要没有其他方法可以关闭键盘,这就是您所需要的。

当然,在 iPad 上,键盘上有一个按钮可以关闭它。如果您想停止该按钮的工作,请实现以下委托方法:

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField 
    return NO;

【讨论】:

【参考方案3】:

如果您真的想拥有自己的键盘。创建一个适当大小和美化的视图 ;).. 并放入 textFiled 的 inputView 属性。

textField.inputView = 你的自定义键盘视图

干杯。

【讨论】:

以上是关于UITextField 始终是第一响应者的主要内容,如果未能解决你的问题,请参考以下文章

尽管垂直对齐设置为中心,但 UITextField 是第一响应者时的文本要么被剪裁,要么出现在内容视图的底部

如果单元格是第一响应者并且不在屏幕上,则 UITableViewCell setEditing:animated 不会被调用

UITextField 模糊文本

iOS 多个 textfield 如何判断谁是第一响应者, 在代理方法里面判断?? 谢谢

iOS6 和 UITableView 中的屏幕外 UITextView

UITextfield 不显示文本的正确部分(我看到的是“...”符号)