如何使新插入的表格视图单元格的文本字段处于活动状态?

Posted

技术标签:

【中文标题】如何使新插入的表格视图单元格的文本字段处于活动状态?【英文标题】:How to make the textField of a newly inserted table view cell active? 【发布时间】:2013-12-15 08:24:18 【问题描述】:

当我的 tableView 被编辑时,我有一个带有插入附件的行,它会在其上方插入一个新的 table view 单元格,该单元格有一个文本字段。如何使文本字段处于活动状态(即 becomeFirstResponder)?例如如果您在 Apple 通讯录应用中添加新手机,它会自动选择新行的文本字段并出现键盘。

从网上搜索看来,单元格的 textField 并没有立即添加到队列中,因此您必须在正确的时间调用 becomeFirstResponder。我应该什么时候调用它?

在 commitEditingStyle: forRowAtIndexPath 我试过: ...

else if (editingStyle == UITableViewCellEditingStyleInsert) 
    [tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
    MyCustomCell* cell = [tableView cellForRowAtIndexPath: indexPath];
    [cell.textField becomeFirstResponder];

没用。

在 cellForRowAtIndexPath 中我也尝试过(有点小技巧):

if (cell.textField.text.length == 0) 
    [conditionCell.textField becomeFirstResponder];

但它似乎也没有在那里做出反应。 (成为第一响应者返回 FALSE)

调用 becomeFirstResponder 的正确位置在哪里?

谢谢

编辑:实际上问题是因为我在 cellForRowAtIndexPath 中有以下行:

cell.textField.enabled = NO;

除非表格处于编辑模式,否则我不希望 textFields 处于活动状态,因此我禁用了它们,并且只有在表格处于编辑模式时才在 didSelectCellAtIndexPath 中重新启用它们。

为什么你应该发布你的所有代码的主要例子,而不仅仅是你认为相关的sn-ps。

【问题讨论】:

你试过'willDisplayCell'吗? 这很奇怪,但becomeFirstRespondercellForRowAtIndexPath 中为我工作 对于新插入的行? 没关系,我想通了; becomeFirstResponder 工作得很好,因为在我的实现中最初禁用了 textFields。 【参考方案1】:

在 cellForIndexPath 中,我禁用了文本字段,但在调用 becomeFirstResponder 之前忘记重新启用它。

队列等没有问题。应该可以正常工作。

【讨论】:

以上是关于如何使新插入的表格视图单元格的文本字段处于活动状态?的主要内容,如果未能解决你的问题,请参考以下文章

如何快速确定哪个文本字段处于活动状态

在搜索栏处于活动状态时删除表格视图中的单元格 - CoreData 错误

自动调整大小(动态高度)表格视图单元格的问题

如何在表格视图单元格(每一行)中添加文本字段并为每个文本字段设置标签以访问它的文本

表格视图单元格中的标签和文本字段之间的空间相等。

表格视图单元格中的文本字段