我正在制作一款ipad应用。在应用程序中,我有一个UITableView,其中包含用户可以键入的自定义单元格。唯一的问题是当你按下其中一个下部单元格时,键盘会出现并阻塞单元格,因此你看不到它。我喜欢它,所以当你按下键盘正上方的单元格时, UITableView向上滚动并反复显示另外一个单元格,以便您可以看到您正在键入的内容。感谢。
答案 0 :(得分: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只是为了确保您的代码安全。这不是绝对必要的。