键盘弹出时如何动画UITableView?

时间:2011-11-21 20:56:55

标签: iphone objective-c uitableview uitextfield

我有一个包含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];
}

2 个答案:

答案 0 :(得分:5)

使用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);
}

答案 1 :(得分:1)

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

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