Мой поздний ответ для разработчика, которому нужно показывать нижний колонтитул, когда отображается клавиатура.
Правильное решение - рассмотреть свойство contentInset (которое можно изменить после отображения клавиатуры), так что это очень просто:
- (void)scrollToFooter {
UIEdgeInsets tableInsets = self.tableView.contentInset;
CGFloat tableHeight = self.tableView.frame.size.height - tableInsets.bottom - tableInsets.top;
CGFloat bottom = CGRectGetMaxY(self.tableView.tableFooterView.frame);
CGFloat offset = bottom - tableHeight;
if(offset > 0.f) {
[self.tableView setContentOffset:CGPointMake(0, offset) animated:YES];
}
}
Я должен заметить, что в моем случае tableView был добавлен в мой собственный ViewController, и в одной из ячеек есть UITextField, который стал первым респондентом. Чтобы переместить нижний колонтитул показа, когда клавиатура отображается, необходимо зарегистрировать уведомление о том, что клавиатура показала уведомление, и (на iOS7) выполнить этот метод в конце текущего цикла выполнения, так как в этом случае iOS7 автоматически выполняет scrollToRowAtIndexPath после того, как наш метод и нижний колонтитул не будут показаны.
-(void)registerKeyboardNotification {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardDidShown:)
name:UIKeyboardDidShowNotification object:nil];
}
- (void)keyboardDidShown:(id)notification {
//move to the end of run loop
[self performSelector:@selector(scrollToFooter) withObject:nil afterDelay:.0];
}