【问题标题】:Table View scroll when text field begin editing iphone当文本字段开始编辑iphone时表格视图滚动
【发布时间】:2010-06-12 16:51:24
【问题描述】:

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

【问题讨论】:

    标签: iphone keyboard uitableview


    【解决方案1】:

    我在 Static Cell TVC 上遇到过这个问题。覆盖 viewWillAppear 而不调用其 Super 时存在问题。因此,如果您这样做,请务必致电

    [super viewWillAppear:animated];
    

    viewWillAppear的顶部

    【讨论】:

    • 好电话,我在将 viewWillAppear: 添加到一个静态 TVC 而不是另一个后忽略了这一点。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我的问题是我在

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

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

      所以,你必须做一些算术来计算出你的最后一行何时显示,并将你的特殊 UITableViewCell 与所有其他行一起放在这里。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-14
        • 1970-01-01
        相关资源
        最近更新 更多