我正在制作一个 ipad 应用程序。在应用程序中,我有一个 UITableView,其中包含用户可以输入的自定义单元格。唯一的问题是,当您按下下方的单元格之一时,键盘会出现并挡住单元格,因此您看不到它。我希望这样当您按下键盘上方的单元格时, UITableView 向上滚动并一遍又一遍地显示 1 个单元格,以便您可以看到您正在输入的内容。谢谢。
图片:http: //i.stack.imgur.com/Kn4CT.png
我正在制作一个 ipad 应用程序。在应用程序中,我有一个 UITableView,其中包含用户可以输入的自定义单元格。唯一的问题是,当您按下下方的单元格之一时,键盘会出现并挡住单元格,因此您看不到它。我希望这样当您按下键盘上方的单元格时, UITableView 向上滚动并一遍又一遍地显示 1 个单元格,以便您可以看到您正在输入的内容。谢谢。
图片:http: //i.stack.imgur.com/Kn4CT.png
假设您正在输入 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 只是为了保证您的标签安全。这并不是绝对需要的。