弹出键盘时如何为 UITableView 设置动画?

Posted

技术标签:

【中文标题】弹出键盘时如何为 UITableView 设置动画?【英文标题】:How to animate up UITableView when Keyboard pops up? 【发布时间】:2011-11-21 20:56:55 【问题描述】:

我有一个有 10 行的 UITableView。每个单元格中都有一个UITextField

问题是,当我单击底部单元格中的UITextField 时,键盘会弹出并阻止该单元格。我该如何处理?我需要为 tableview 设置动画吗?

更新代码:

- (void)textFieldDidBeginEditing:(UITextField *)textField
    self.vitalsTableView.contentInset=UIEdgeInsetsMake(0,0,200,0);
    NSIndexPath *path = [self.vitalsTableView indexPathForSelectedRow];
    [self.vitalsTableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES];

【问题讨论】:

检查Apple's documentation 的键盘notifications。我发布了example code. 【参考方案1】:

使用 UITableView 的- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated 方法

示例:

[tableView scrollToRowAtIndexPath:cellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

会将您的 tableView 滚动到保持单元格可见的最低偏移量。如果您的单元格下面没有足够的单元格,您可以为您的表格设置一个 contentInset 以允许滚动偏移。

也许您的 UITextField 委托是表视图控制器。您可以拨打- (void)textFieldDidBeginEditing:(UITextField *)textField

在底部单元格的情况下:

- (void)textFieldDidBeginEditing:(UITextField *)textField
    tableView.contentInset=UIEdgeInsetsMake(0,0,200,0);
    [tableView scrollToRowAtIndexPath:cellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];


- (void)textFieldDidBeginEditing:(UITextField *)textField
    tableView.contentInset=UIEdgeInsetsMake(0,0,0,0);

【讨论】:

谢谢,你能举例说明如何在我的场景中实现它吗? 我这样做了,当我单击底部单元格之一中的 UITextField 时没有任何反应。它仍然被键盘覆盖。 谢谢,这有点奏效。现在,当我单击 UITextField 时,它可以让我向上滚动,以便我可以看到单元格,但它不会自动滚动,就像它仍然覆盖单元格一样,但它至少让我滚动表格以便我可以手动查看它。有什么办法可以解决吗?我是否必须为每一行设置不同的contentInset【参考方案2】:

如果有人在 ios 7 中遇到同样的问题:我发现这个问题发生在我身上只是因为我忘记在我自己的 viewWillAppear: 实现中调用 viewWillAppear: 的超类实现。一行解决了问题:

-(void)viewWillAppear:(BOOL)animated 
  [super viewWillAppear:animated];
  // Do whatever you need to

【讨论】:

以上是关于弹出键盘时如何为 UITableView 设置动画?的主要内容,如果未能解决你的问题,请参考以下文章

更改设备方向时如何为uiimageview设置动画

首次打开页面时如何为 div 的大小调整设置动画 [重复]

当它们移动以填充其他淡出的 div 留下的空白空间时如何为 div 设置动画

android软键盘弹出时如何处理页面布局

键盘动画移动 UITableView 部分标题

如何为 UITableViewCell 设置动画