在编辑时尝试使用UITextField创建自定义UITableViewCell成为FirstFirstResponder

时间:2012-01-20 18:38:41

标签: iphone ios5 uiresponder

我有UITableViewController个自定义UITableViewCell,其中包含UITextField。将表格视图切换到编辑模式时,我会在表格底部添加一个新单元格,并希望创建此单元格becomeFirstResponder。我的tableView:cellForRowAtIndexPath:方法检查这个底部单元格,所以我只添加了一行:

  

[cell.theTextField becomeFirstResponder];

我认为应该有用。但是,首次显示表视图时,它似乎不起作用。但是,如果我选择单元格(使其成为第一个响应者),然后退出编辑模式(在我的代码中导致resignFirstResponder),然后我可以回到编辑模式并且神奇地成为第一个响应者,因为我期待!

请注意,即使我选择了不同的单元格结束编辑模式(它们都有文本字段)并退出编辑模式,然后重新进入,它仍然有效, 只要 在某些时候我创建了最后一个单元格becomeFirstResponder(通过选择它)。

所以,我的猜测是,当它第一次成为第一个响应者时,在表视图或其他一些原来没有设置的地方设置了一些东西,从那时起它就可以了。

任何人都对这里发生的事情有任何想法?

1 个答案:

答案 0 :(得分:1)

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