Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 编辑时,尝试使带有UITextField的自定义UITableViewCell成为第一响应程序_Iphone_Ios5_Uiresponder - Fatal编程技术网

Iphone 编辑时,尝试使带有UITextField的自定义UITableViewCell成为第一响应程序

Iphone 编辑时,尝试使带有UITextField的自定义UITableViewCell成为第一响应程序,iphone,ios5,uiresponder,Iphone,Ios5,Uiresponder,我有一个带有自定义UITableViewCells的UITableViewController,其中包含一个UITextField。将表格视图切换到编辑模式时,我在表格底部添加了一个新单元格,并希望使该单元格成为第一响应者。我的tableView:cellforrowatinexpath:方法检查这个底部单元格,所以我只添加了一行: [cell.theTextField成为第一响应者] 我认为这应该管用。但是,当第一次显示表视图时,它似乎不起作用。但是,如果我选择了单元格(使其成为第一响应者),

我有一个带有自定义
UITableViewCell
s的
UITableViewController
,其中包含一个
UITextField
。将表格视图切换到编辑模式时,我在表格底部添加了一个新单元格,并希望使该单元格成为第一响应者。我的
tableView:cellforrowatinexpath:
方法检查这个底部单元格,所以我只添加了一行:

[cell.theTextField成为第一响应者]

我认为这应该管用。但是,当第一次显示表视图时,它似乎不起作用。但是,如果我选择了单元格(使其成为第一响应者),然后退出编辑模式(导致代码中出现
辞职第一响应者
),我就可以返回编辑模式,神奇地它变成了我所期望的第一响应者

请注意,即使我选择了不同的单元格(它们都有文本字段)结束编辑模式并退出编辑模式,然后回到编辑模式,它仍然可以工作,只要在某个点上,我已使最后一个单元格
成为第一响应者(通过选择它)

所以,我的猜测是,当它第一次成为第一响应者时,会在表视图中或其他一些地方设置一些最初没有设置的内容,从那时起,它就开始工作了


有人知道这里可能发生了什么吗?

第一个
becomeFirstResponder
调用失败,因为该单元还没有superview。从
tableView:cellforrowatinexpath:
返回单元格后,表视图将其添加为子视图。我建议你在别的地方打这个电话。如果您已经有一个自定义的
UITableViewCell
子类,您可以实现
didmovetown:
并在那里调用
[self becomeFirstResponder]

第一个
becomeFirstResponder
调用失败,因为该单元格还没有超级视图。从
tableView:cellforrowatinexpath:
返回单元格后,表视图将其添加为子视图。我建议你在别的地方打这个电话。如果您已经有一个自定义的
UITableViewCell
子类,您可以实现
didmovetown:
并在那里调用
[self becomeFirstResponder]

谢谢您的建议,但还有几件事。1) 我怎么能只为一个单元格(而不是所有单元格)选择这个呢?2)我只是尝试将它添加到我的自定义单元格类中,但它什么也没做。我还试着把它放在tableView:willDisplayCell:forRowAtIndexPath:where我可以为那个单元格做一个“如果”,但它仍然不起作用。嗯,这很难。进入编辑模式时如何添加单元格?如果所有其他操作都失败,您可以在延迟后执行
成为第一响应者
,但这很难看,很脆弱,只能作为最后的手段。以下是相关部分:[self.tableView beginUpdates];如果(编辑){[self.tableView insertRowsAtIndexPaths:[NSArray arraywhithobject:indexPathForNewLabel]带行动画:uitableview行动画自动];}[self.tableView endUpdates];谢谢你的建议,但是有几件事。1) 我怎么能只为一个单元格(而不是所有单元格)选择这个呢?2)我只是尝试将它添加到我的自定义单元格类中,但它什么也没做。我还试着把它放在tableView:willDisplayCell:forRowAtIndexPath:where我可以为那个单元格做一个“如果”,但它仍然不起作用。嗯,这很难。进入编辑模式时如何添加单元格?如果所有其他操作都失败,您可以在延迟后执行
成为第一响应者
,但这很难看,很脆弱,只能作为最后的手段。以下是相关部分:[self.tableView beginUpdates];如果(编辑){[self.tableView insertRowsAtIndexPaths:[NSArray arraywhithobject:indexPathForNewLabel]带行动画:uitableview行动画自动];}[self.tableView endUpdates];