检测插入的单元格,然后让它成为FirstResponder
Posted
技术标签:
【中文标题】检测插入的单元格,然后让它成为FirstResponder【英文标题】:Detecting an inserted cell and then having it becomeFirstResponder 【发布时间】:2013-04-10 12:44:29 【问题描述】:对于我的自定义单元格,举个简单的例子,我只有一个UITextField
,有没有办法让insertRowsAtIndexPaths
刚刚插入的单元格becomeFirstResponder
?
我需要一种方法来检测这一点,以便在插入后和插入动画结束时成为第一响应者。
有什么想法,甚至接近吗?
谢谢
【问题讨论】:
你会一直插入一行吗?或者是否可以插入多行?那么你希望哪一个作为第一响应者? 一次总是一行。 【参考方案1】:像这样的东西??
- (void) insertRows
.
.
.
[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
[tableView endUpdates];
NSIndexPath p = [indexPaths lastObject];
MyCustomCell *cell = [cellForRowAtIndexPath:p];
[cell.textField becomeFirstResponder];
【讨论】:
如果我还在 cellForRowAtIndexPath 上使用单元出队,这将如何工作?在执行 insertRowsAtIndexPaths 之后,将调用 cellForRowAtIndexPath。是否有回调可以用来检测动画何时结束。 另外,为什么需要 [tableView beginUpdates]/endUpdates?没有它,动画也能正常工作。 如果它在没有 begin/endUpdates 的情况下工作,那很好.. 但是您必须将 tableView 滚动到最近插入的行,以便它可见 [tableView scrollToRowAtIndexPath:p atScrollPosition:UITableViewScrollPositionTop animated:YES]; MyCustomCell *cell = [cellForRowAtIndexPath:p]; [cell.textField becomeFirstResponder];以上是关于检测插入的单元格,然后让它成为FirstResponder的主要内容,如果未能解决你的问题,请参考以下文章
在 tableView 中插入新行后保存成为第一响应者的 UITextField 文本