转载自 http://blog.csdn.net/hamasn/article/details/12854369
- #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 然后滚滚过去就可以了!