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

时间:2010-06-12 16:51:24

标签: iphone keyboard uitableview

我在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];
}

3 个答案:

答案 0 :(得分:9)

我在Static Cell TVC上碰到了这个问题。覆盖viewWillAppear而不是调用其超级时会出现问题。因此,如果您这样做,请务必致电

[super viewWillAppear:animated];

位于viewWillAppear

的顶部

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

我的问题是我在

中添加了包含UITextField的表格单元格
- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {

功能。如果这样做,自动UITableView滚动不起作用。

所以,你需要做一些算法来计算你的最后一行显示的时间,并将你的特殊UITableViewCell和其他所有的一起放在这里。

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