iOS7滚动到UITableViewController的行,同时在UITableViewCell中编辑UITextField并使用适当的偏移量

Sco*_*ser 1 uitableview uitextfield ios uitextfielddelegate ios7

我的UITableViewController上的单元格有一个可以编辑的textField.当我编辑textField时,我需要滚动tableview,以便当前字段的行位于键盘上方.这是我正在使用的代码:

-(void)textViewDidBeginEditing:(UITextView *)textView
{   
    UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];

    [self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForCell:cell]
                          atScrollPosition:UITableViewScrollPositionTop
                                  animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

问题是它不适用于我的tableview中的最后几个单元格.我猜它与tableview的contentSize有关.是否有适当的方法来调整tableview的偏移量,以便最后一个单元格将在键盘上方滚动?

小智 5

相反,如果

[self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];
Run Code Online (Sandbox Code Playgroud)

您可以使用

[self.tableView setContentOffset:CGPointMake(0, CGRectGetMinY(cell.frame)) animated:YES];
Run Code Online (Sandbox Code Playgroud)

这会将您选择的单元格滚动到屏幕顶部(如UITableViewScrollPositionTop),无论您是点击第一个还是最后一个单元格.控制ContentOffset可以设置所选单元格的位置.