在UITableView上的reloadData之后,文本字段不会被选中

时间:2013-10-06 12:59:21

标签: iphone ios objective-c uitableview

在我的UITableView中,我有一行,每行包含4个文本字段。在用户结束编辑后,UITableView数据源中的一些东西正在重新计算,所以我需要在文本字段版本之后重新加载UITableView。但是因为正在重新加载tableview,当用户在编辑第一个文本字段时触摸另一个文本字段进行编辑时,第二个文本字段不会被选中。在编辑之前,他必须再次触摸它。

有没有办法避免这种行为?不幸的是,我确实需要使用reloadData而不是reloadSections或reloadRows方法。任何帮助将不胜感激,谢谢!

3 个答案:

答案 0 :(得分:0)

重新加载表格视图将重新签名文本字段的第一个响应者甚至文本视图。如果您需要进行多项更改,可以试试这个技巧。

[[self tableView] beginUpdates]
[[self tableView] endUpdates]

答案 1 :(得分:0)

尝试为每个字段分配gestureRecognizer或为所有字段分配相同的字段。在必填字段中捕获touch后,捕获tag并将该字段设为firstResponder

答案 2 :(得分:0)

总结我收到的所有帮助和我自己的想法我已经用以下内容:

-Delay重新加载0.01秒,以便调用textFieldDidBeginEditing

- 然后将文本字段的标记和单元格的索引路径保存到textFieldDidBeginEditing

中的变量

在tableview上调用reloadData

在使用变量保存的文本字段上调用becomeFirstResponder

然而,这导致键盘短暂隐藏,因为它在重新加载期间没有任何响应者。为了解决这个问题,我在tableview的superview中创建了一个伪文本字段,并将其指定为响应者,直到重新加载tableview以分配回用户选择的文本字段。

当然不是最干净的解决方案,但它确实有效。