【发布时间】:2012-12-27 06:48:34
【问题描述】:
我正在制作一个 ipad 应用程序。在应用程序中,我有一个 UITableView,其中包含用户可以输入的自定义单元格。唯一的问题是,当您按下下方的一个单元格时,键盘会升起并挡住该单元格,因此您看不到它。我想要这样,所以当您按下键盘上方的单元格时, UITableView 向上滚动并一遍又一遍地显示 1 个单元格,以便您可以看到您正在输入的内容。谢谢。
【问题讨论】:
标签: xcode ipad uitableview
我正在制作一个 ipad 应用程序。在应用程序中,我有一个 UITableView,其中包含用户可以输入的自定义单元格。唯一的问题是,当您按下下方的一个单元格时,键盘会升起并挡住该单元格,因此您看不到它。我想要这样,所以当您按下键盘上方的单元格时, UITableView 向上滚动并一遍又一遍地显示 1 个单元格,以便您可以看到您正在输入的内容。谢谢。
【问题讨论】:
标签: xcode ipad uitableview
假设您正在输入一个 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 只是为了保证你的标签安全。它不是绝对必要的。
【讨论】: