#pragma mark -UITextFieldDelegate
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
if ((textField.tag == TEXT_TAG_NAME || textField.tag == TEXT_TAG_PHONE) && [[UIScreen mainScreen] bounds].size.height < 568)
{
CGPoint origin = textField.frame.origin;
CGPoint point = [textField.superview convertPoint:origin toView:self.contactTableView];
float navBarHeight = self.navigationController.navigationBar.frame.size.height;
CGPoint offset = self.tableView.contentOffset;
// Adjust the below value as you need
offset.y = (point.y - navBarHeight-40);
[self.tableView setContentOffset:offset animated:YES];
}
}
事实上 如果你的tableview的contentsize足够大的话,你可以用
scrollToRowAtIndexPath: 函数 scrolls the cell 到UITableViewScrollPositionTop 或者 UITableViewScrollPositionMiddle
但前提是你的tableView's contentSize 足够大 去滚到你想要滚得地方.
如果你想scroll的cell是最后一个cell或者最后几个cell的时候,scrollToRowAtIndexPath: 函数就是没有用的了。
So,这时候的solution是上面
- (void)textFieldDidBeginEditing:(UITextField *)textField这个函数里面做一下处理。
计算出正确的contentoffset 然后滚滚过去就可以了!