当文本字段开始编辑时,表格视图滚动iphone

问题描述:

我在iPhone应用程序中有表格视图控制器。表格视图有两个部分。第一节有两排,第二节有一排。第二部分有一个自定义表格视图单元格。当文本字段开始编辑时,表格视图滚动iphone

第二部分有一个文本框,当文本框开始编辑并弹出键盘时隐藏。我想让这个表格视图在弹出键盘时滚动。

我试了下我在不同网站上遇到的代码,但徒劳无功。

在此先感谢。

-(void) textFieldDidBeginEditing:(UITextField *)textField { 

    CGRect textFieldRect = [textField frame]; 
    [self.tableView scrollRectToVisible:textFieldRect animated:YES]; 
} 
          atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 
} 

-(void) textFieldDidBeginEditing:(UITextField *)textField { 

    UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview]; 
    [self.tableView scrollToRowAtIndexPath:[tableView indexPathForCell:cell] 
          atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 
} 

您想要使用表视图的setContentOffset方法。确定垂直滚动的大小(以像素为单位),然后:

CGFloat verticalScroll = ... your code here ... 
[self.tableView setContentOffset:CGPointMake(0, verticalScroll) animated:YES]; 

我在Static Cell TVC上遇到了这个问题。当覆盖viewWillAppear而不是调用它的Super时有一个问题。所以,如果你这样做,请确保调用

[super viewWillAppear:animated]; 

viewWillAppear

+0

良好的呼叫,我添加viewWillAppear后忽略了这一点:一个静态TVC,而不是另一个。 – NSTJ 2013-01-28 14:37:17

+0

救了我一个痛苦的世界。谢谢 :) – 2016-04-09 15:12:07

我的问题是我在

- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 

功能将包含的UITextField表格单元格的顶部。如果你这样做,自动UITableView滚动不起作用。

所以,你必须做一些算术来确定你的最后一行显示的时间,并把你的特殊UITableViewCell和其他所有的一起放在这里。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {