【问题标题】: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 退出键盘时,它会按预期以动画方式退出。

我错过了什么吗?

谢谢!

【问题讨论】:

    标签: ios objective-c uitableview uitextfield uitextfielddelegate


    【解决方案1】:

    我认为您的单元格成为响应者并在重新加载引起的 tableview 动画之前或期间调出键盘。 试试

    - (void) awakeFromNib
    {        
        [_workName performSelector:@selector(becomeFirstResponder) onThread:[NSThread getMainThread] withObject:nil withDelay:0.1];
    
    }
    

    我质疑你为什么要重新加载表格只是为了选择一个单元格。

    【讨论】:

    • 我正在重新加载表格,因为触摸会使新单元格出现在旧单元格的位置。这是错误的方法吗?
    • 按照您的建议,我延迟了它,它解决了问题。难道没有更好的方法来做到这一点吗?在较旧的 iPhone 上,如果执行需要更多时间,动画就会停止。
    • 问题是,如您所见,您所依赖的时机无法确定。延迟是一种解决方法。如果你得到你想要的结果,为什么要花更多的时间。
    • 我不知道你想要完成的细节,但我假设你正在使单元格可编辑并修改布局。该代码应该真正保留在您的自定义单元格中。这样您就可以控制动画并在完成时成为第一响应者。这样你就可以保证事件的顺序。
    • 不可编辑,只是加载一个新的,但这确实很有意义。现在我想起来了,我真的不认为我需要 2 个细胞......谢谢你的洞察力先生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多