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];