UITextField 始终是第一响应者
Posted
技术标签:
【中文标题】UITextField 始终是第一响应者【英文标题】:UITextField that is always first responder 【发布时间】:2013-02-11 23:02:53 【问题描述】:我有一个 ViewController,它只是一个文本字段、一个下一步按钮和一个后退按钮。我希望 文本字段始终可编辑,同时键盘始终存在。我还想自定义键盘成为我自己的,但是一旦我弄清楚这部分就会出现。
编辑:在我的情况下,键盘实际上只是一个带有 10 位数字和一个退格键的小键盘
解决此问题的最佳方法是什么?我一直在努力让 UITextField 与自定义键盘视图一起使用,然后在视图加载时使其成为第一响应者,但也许有更好的方法。
提前致谢!
【问题讨论】:
什么是自定义键盘?你真的需要做一个吗?我使用自定义键盘的每一个应用程序都非常糟糕。仅键盘就让我很反感,以至于我删除了该应用程序。 其实它只是一个键盘。我只需要数字。另外,请查看 Scorekeeper XL 应用程序。我觉得他的键盘很漂亮。 我会看看那个应用,但如果你只需要一个小键盘和退格键盘,那么你可以在本机设置键盘样式来做到这一点。 如果您只想要小键盘,则将文本字段的keyboardType 设置为UIKeyboardTypeNumberPad
。
是的,我明白,我真正想知道的是如何让键盘在视图出现时就在那里,而不是在它出现的第二秒滑动
【参考方案1】:
要使 UITextField 始终使用键盘...
在viewDidAppear
或viewWllAppear
函数中执行此操作...
[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 不会被调用
iOS 多个 textfield 如何判断谁是第一响应者, 在代理方法里面判断?? 谢谢