滚动 UITableView 框架问题以查看单元格中的 UITextField?

Posted

技术标签:

【中文标题】滚动 UITableView 框架问题以查看单元格中的 UITextField?【英文标题】:Scroll UITableView frame problems to see UITextField in cell? 【发布时间】:2012-02-28 21:19:38 【问题描述】:

在我的应用程序中,我有一个 UITableView,其中包含一些自定义单元格,并且在其中放置了 UITextField。 UITextField 有时会被我的键盘挡住,这是一个问题。所以在我的情况下,我试图移动整个 tableview 本身,而不是仅仅滚动到对我来说是个问题的特定单元格。

反正我也遇到这种问题。

无论如何,这是我的 textField 显示方法和结束方法的代码。问题是 UITableView 永远不会移动正确的数量。我只是想将 UITableview 向上移动到足以使当前正在调用的 UITextField 的单元格就在键盘上方。 所以有时它会在我看不到单元格的地方滚动太多,或者整个表格视图在我根本看不到它的地方移动了一个疯狂的量。

这里是我的代码,有没有人发现有什么问题?

- (BOOL)textFieldShouldBeginEditing:(UITextField *)thetextField 
    CustomCell *cell = (CustomCell*)[[thetextField superview] superview];
    CGRect cellRect = [cell convertRect:cell.frame toView:self.view];
    float bottomCell = cellRect.origin.y - cellRect.size.height;
    if (bottomCell >= keyboardY) 
        subtractionAmount = keyboardY - bottomCell;
        didMove = YES;
        [UIView animateWithDuration:0.4 
                         animations:^
                             thetableView.center = CGPointMake(thetableView.center.x, thetableView.center.y + subtractionAmount);
                         ];
    
    return YES;


-(BOOL) textFieldShouldReturn:(UITextField *)thetextField   
    if (didMove) 
        didMove = NO;
        [UIView animateWithDuration:0.4 
                         animations:^
                             thetableView.center = CGPointMake(thetableView.center.x, thetableView.center.y - subtractionAmount);
                         ];
    

谢谢!

【问题讨论】:

【参考方案1】:

如果我没有正确理解您的问题,我在一个月前就遇到了这个问题。我的场景如下:UITableViewUITextFields 没有 UITableViewController

我通过以下教程解决了这个问题:sliding-uitextfields-around-to-avoid。

希望对你有帮助。

【讨论】:

从表面上看,我正在做本教程中的所有事情,但只是有点不同,所以我仍然很好奇为什么上面的代码不能完全工作。

以上是关于滚动 UITableView 框架问题以查看单元格中的 UITextField?的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 以编程方式滚动到不存在的单元格

动态地将单元格添加到分组的 uitableview 并以编程方式适应滚动

滚动到 UITableView 框架之外

UITableView 动画在部分之间滚动,同时临时删除过多的单元格以简化动画

为啥我的 UITableView 单元格在滚动时重叠?

xCode:UITableView 无法查看/访问所有单元格