按下按钮和文本字段切换后 UITextField 失去焦点(键盘保持可见)

Posted

技术标签:

【中文标题】按下按钮和文本字段切换后 UITextField 失去焦点(键盘保持可见)【英文标题】:UITextField losing focus after button press and text field switch (keyboard remains visible) 【发布时间】:2018-03-05 21:12:50 【问题描述】:

我在这里有一个 UITableViewCell 子类,用于管理表格视图单元右侧的 UITextField 设置。根据表格,在任何给定时间显示 4 到 8 个这些单元格;我将它们用于单元数据输入(即输入距离、温度等),因此单元子类有相当多的逻辑。

无论出于何种原因,我注意到如果我执行以下步骤:

1) Tap on a text field to begin editing and bring up the keyboard
2) Enter in some text
3) Tap the clear button (which is enabled on the text field)
4) Tap on another textfield in the same table view

然后当前 UITextField 失去焦点,但第二个文本字段没有获得焦点。这意味着当前没有 UITextField 具有焦点,但键盘仍在屏幕上显示......但没有任何活动的文本字段,它什么也不做,也不能被解雇(大概是因为没有第一响应者辞职?)。

然后我可以再次点击另一个文本字段,它将获得焦点并开始编辑——此时键盘再次变得可操作,按回车/完成键将关闭它并像往常一样结束编辑。

如果我在没有先点击按钮的情况下直接点击另一个 UITextField,那么第二个 UITextField 将立即获得焦点(正如我所期望的那样)。但是,如果您在点击文本字段以外的任何类型的按钮后尝试切换字段,似乎在 UITextField 之外按下按钮会导致此行为发生。

有人知道这是什么原因吗?几乎听起来响应者链有问题,但我不确定问题是什么或如何解决。

【问题讨论】:

【参考方案1】:

首先,您确定表中的文本文件具有唯一标识符,例如标签。 其次,如果你想让一个文本文件丢失了第一响应者但键盘仍然出现,你应该让另一个文本文件成为第一响应者。

【讨论】:

【参考方案2】:

弄清楚它是什么......

问题是我在我的自定义单元格在编辑完成时调用的委托方法中重新加载表数据。显然,在切换 UITextFields 时重新加载 tableview 数据将导致第二个文本字段无法获得焦点(但键盘不会被关闭),从而导致我看到的问题。

【讨论】:

以上是关于按下按钮和文本字段切换后 UITextField 失去焦点(键盘保持可见)的主要内容,如果未能解决你的问题,请参考以下文章

在键盘上方添加 UITextField

按下按钮时在 UITableView 单元格中清除 UITextField 的文本

如何将 UITextField 数据复制到 UILabel

帮助! uitableviewcell 按钮按下更新文本字段

UITextfield 键盘辞职

按下返回按钮时在 UITextField 之间切换