如何使新插入的表视图单元的textField处于活动状态?

时间:2013-12-15 08:24:19

标签: ios uitableview uitextfield becomefirstresponder

我正在编辑tableView时有一行插入附件,并在其上方插入一个具有文本字段的新表格视图单元格。如何激活文本字段(即becomeFirstResponder)?例如在Apple Contacts应用程序中,如果添加新手机,它会自动选择新行的文本字段并显示键盘。

从在线搜索看来,单元格的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)

哪里是正确的地方,可以调用yesFirstResponder?

由于

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

cell.textField.enabled = NO;

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

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

1 个答案:

答案 0 :(得分:0)

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

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