我在UIViewController中有一个UITableView作为子视图。当用户按下tableView下的UITextfield时,我会在键盘出现时设置tableView的contentOffset。如果我像1点(向上/向下)滚动,表格视图会将其contentOffset重置为默认值。我确信我没有在我的代码中的任何地方将contentOffset重置为零。为什么会这样? 以下是我设置ContentOffset的方法:
CGRect keyboardEndFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
[_tableView setContentOffset:CGPointMake(0, keyboardEndFrame.size.height) animated:YES];
答案 0 :(得分:2)
要向UITableView添加填充以使其内容可以在键盘上方滚动,您可以执行以下操作:
-(void) keyboardMoved:(NSNotification*)notify {
// Get values
CGRect endFrame;
[[[notify userInfo] valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&endFrame];
endFrame = [self.view convertRect:endFrame fromView:nil];
// Add padding
int inset = self.view.bounds.size.height - endFrame.origin.y;
tableView.contentInset = UIEdgeInsetsMake(0, 0, inset < 0 ? 0 : inset, 0);
tableView.scrollIndicatorInsets = tableView.contentInset;
}
答案 1 :(得分:1)
问题在于您没有调整内容大小,主要是例如:
你有uiTableView,其大小为320 * 400且内容大小相同,你显示键盘和设置内容偏移,但不是改变内容大小(我的意思是你设置不可取的偏移),而不是你开始滚动,你的表滚动对于它可行的偏移值,在这种情况下,您需要增加内容大小。但是对于tableView,更好的是添加带有计算底部插入的contentInset。