0

我正在制作一个 ipad 应用程序。在应用程序中,我有一个 UITableView,其中包含用户可以输入的自定义单元格。唯一的问题是,当您按下下方的单元格之一时,键盘会出现并挡住单元格,因此您看不到它。我希望这样当您按下键盘上方的单元格时, UITableView 向上滚动并一遍又一遍地显示 1 个单元格,以便您可以看到您正在输入的内容。谢谢。

图片:http: //i.stack.imgur.com/Kn4CT.png

4

1 回答 1

0

假设您正在输入 uitextfield,请实现 textfield 委托方法。

显示键盘时计算键盘高度。

编辑:

这就是我解决问题的方法:

用唯一的数字标记每个提交的文本(保留一个 baseConstantInteger,确保您的标签绝对唯一)。

baseConstant 可以是任何东西,让我们假设baseConstantInteger = 500;

对于cellForRowAtIndexPath方法中的每个单元格,在您的自定义单元格中设置

textField.tag = baseConstantInteger+indexPath.row

接着

- (void)textFieldDidBeginEditing:(UITextField *)textField
{   
    int clickedRow = textField.tag - baseConstantInteger;
    [self.theTableView scrollToRowAtIndexPath:(indexPath based on clickedRow) atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
    [UIView animateWithDuration:0.4
                     animations:^{
                         theTableView.frame = CGRectMake(theTableView.frame.origin, theTableView.contentSize.width, theTableView.frame.size.height-keyBoardHeight);
                     }
     ];
}

返回时(与 didEndEditing 类似)

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [UIView animateWithDuration:0.2
                     animations:^{
                         theTableView.frame = CGRectMake(theTableView.frame.origin, theTableView.contentSize.width, theTableView.frame.size.height+keyBoardHeight);
                     }
     ];
    [textField resignFirstResponder];
    return NO/YES;
}

ps:baseConstantInteger 只是为了保证您的标签安全。这并不是绝对需要的。

于 2013-01-13T00:29:56.467 回答