我的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];
}
问题是它不适用于我的tableview中的最后几个单元格。我猜它与tableview的contentSize有关。有没有一种正确的方法来调整tableview的偏移量,以便最后一个单元格将在键盘上方滚动?
答案 0 :(得分:5)
相反,如果
[self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];
你可以使用
[self.tableView setContentOffset:CGPointMake(0, CGRectGetMinY(cell.frame)) animated:YES];
这会将您选择的单元格滚动到屏幕顶部(如UITableViewScrollPositionTop),无论您是先点击还是最后一个单元格。 控制ContentOffset,您可以设置所选单元格的位置。