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

UITextField losing focus after button press and text field switch (keyboard remains visible)

提问人:CMPXCHG8B 提问时间:9/25/2017 更新时间:9/26/2017 访问量:495

问:

我这里有一个 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 之外按下按钮似乎会导致发生此行为。

有谁知道是什么原因造成的?这听起来好像响应器链有问题,但我不确定问题是什么或如何解决它。

Objective-C iPhone

评论


答:

0赞 YoungEagle 9/25/2017 #1

首先,确定表中的textfile具有唯一标识符,例如tag。 其次,如果您希望文本字段丢失第一响应者但键盘仍然出现,则应使另一个文本字段成为第一响应者。

0赞 CMPXCHG8B 9/26/2017 #2

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

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