0

在我的 UITableView 中,每行包含 4 个文本字段。在用户结束编辑 UITableView 数据源中的几件事后,正在重新计算,所以我需要在编辑文本字段后重新加载 UITableView。但是由于 tableview 正在重新加载,当用户在编辑第一个文本字段时触摸另一个文本字段进行编辑时,第二个文本字段不会被选中。他必须再次触摸它才能对其进行编辑。

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

4

3 回答 3

0

Try assigning a gestureRecognizer to each field or same one to all fields. Once you capture the touch in required field, capture the tag and make that field the firstResponder.

于 2013-10-06T18:29:28.597 回答
0

总结我收到的所有帮助和我自己的想法,我做了以下几点:

-延迟重新加载 0.01 秒,因此textFieldDidBeginEditing被调用

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

- 调用reloadDatatableview

- 调用becomeFirstResponder用变量保存的文本字段

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

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

于 2013-10-07T11:23:57.123 回答
0

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

[[self tableView] beginUpdates]
[[self tableView] endUpdates]
于 2013-10-06T18:23:34.623 回答