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

时间:2012-02-28 21:19:39

标签: ios uitableview keyboard uitextfield frame

在我的应用程序中,我有一个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 个答案:

答案 0 :(得分:0)

如果我不正确地解决你的问题,我在一个月前遇到了这个问题。我的方案如下:UITableView UITextFieldUITableViewController没有{{1}}。

我使用以下教程修复了问题:sliding-uitextfields-around-to-avoid

希望它有所帮助。