我正在尝试在UITableView中滚动,同时显示键盘。我调整了TableView的大小,使其不被键盘覆盖。我覆盖了textFieldShouldReturn函数,跳转到我的UITableView中的下一个UITextField,并滚动到下一个字段。这是我使用的代码:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
UITableViewCell *cell = (UITableViewCell *)[textField superview];
NSIndexPath *indexPath = [self.prefTableView indexPathForCell:cell];
NSString *nextRowKey = [preferences nextRowKeyAtIndexPath:indexPath];
[textField resignFirstResponder];
if (nextRowKey != nil) {
tagBeingEdited = textField.tag + 1;
NSIndexPath *nextIndexPath = [NSIndexPath indexPathForRow:indexPath.row+1
inSection:indexPath.section];
[self.prefTableView scrollToRowAtIndexPath:nextIndexPath
atScrollPosition:UITableViewScrollPositionTop
animated:YES];
//[self.prefTableView selectRowAtIndexPath:nextIndexPath
// animated:YES
// scrollPosition:UITableViewScrollPositionMiddle];
if ([[self.prefTableView indexPathsForVisibleRows] containsObject:indexPath] == YES) {
[[self.prefTableView viewWithTag:tagBeingEdited] becomeFirstResponder];
}
} else {
isEditing = NO;
}
return NO;
}
但是,我的视图从不滚动。或者,如果我手动滚动视图,它将返回到顶部。为什么呢?
注意:我只使用scrollToRowAtIndexPath和selectRowAtIndexPath之一。我把它们都放在那里,因为我先尝试了一个,然后是另一个。
答案 0 :(得分:0)
@occulus是正确的,当键盘出现时,UITableViewController会自动处理调整大小。如果您希望使用UIViewController的子类进行该行为,则需要额外的工作。
Cocoa with love的以下链接就是这样做的一个例子。
http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html