为啥从自定义单元格调用时 UIkeyboard 不动画?
Posted
技术标签:
【中文标题】为啥从自定义单元格调用时 UIkeyboard 不动画?【英文标题】:Why doesn't UIkeyboard animate when called from a Custom Cell?为什么从自定义单元格调用时 UIkeyboard 不动画? 【发布时间】:2013-07-21 12:17:58 【问题描述】:我有一个 UItableViewCell 的子类
当用户触摸 CELL 时,我调用 reload,如下所示:
[_tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
// This is where magic happens...
[_tableView beginUpdates];
[_tableView endUpdates];
然后出现一个新的单元格。这个新单元格成为 _workName UITextField 的第一响应者,如下所示:
@implementation TWMainViewPlusExpandedCell
- (void) awakeFromNib
[_workName becomeFirstResponder];
键盘出现,但没有动画。这是即时的!好像没有动画!
但是,当我通过调用 resignFirstResponder 退出键盘时,它会按预期以动画方式退出。
我错过了什么吗?
谢谢!
【问题讨论】:
【参考方案1】:我认为您的单元格成为响应者并在重新加载引起的 tableview 动画之前或期间调出键盘。 试试
- (void) awakeFromNib
[_workName performSelector:@selector(becomeFirstResponder) onThread:[NSThread getMainThread] withObject:nil withDelay:0.1];
我质疑你为什么要重新加载表格只是为了选择一个单元格。
【讨论】:
我正在重新加载表格,因为触摸会使新单元格出现在旧单元格的位置。这是错误的方法吗? 按照您的建议,我延迟了它,它解决了问题。难道没有更好的方法来做到这一点吗?在较旧的 iPhone 上,如果执行需要更多时间,动画就会停止。 问题是,如您所见,您所依赖的时机无法确定。延迟是一种解决方法。如果你得到你想要的结果,为什么要花更多的时间。 我不知道你想要完成的细节,但我假设你正在使单元格可编辑并修改布局。该代码应该真正保留在您的自定义单元格中。这样您就可以控制动画并在完成时成为第一响应者。这样你就可以保证事件的顺序。 不可编辑,只是加载一个新的,但这确实很有意义。现在我想起来了,我真的不认为我需要 2 个细胞......谢谢你的洞察力先生。以上是关于为啥从自定义单元格调用时 UIkeyboard 不动画?的主要内容,如果未能解决你的问题,请参考以下文章
为啥从自定义 UIView 向 UIButton 添加子视图不显示添加的子视图?
从自定义单元格返回 NSIndexPath ? (UITableView)