Нашел решение для этого, благодаря 'mvds' здесь и некоторому копанию в документации.Вот как выглядит мой пересмотренный метод scrollViewToCenter:
- (void)scrollViewToCenter
{
[self determineActiveTextField];
CGPoint textFieldOrigin = [activeTextField convertPoint:activeTextField.frame.origin toView:self.view];
CGFloat scrollPoint = self.view.frame.size.height / 2 - activeTextField.frame.size.height;
if (textFieldOrigin.y > scrollPoint) {
CGFloat scrollDistance = textFieldOrigin.y - scrollPoint;
[self.tableView setContentOffset:CGPointMake(0.0f,scrollDistance) animated:YES];
}
}
Я называю его всякий раз, когда пользователь нажимает на любое из текстовых полей (или это было сделано первым респондентом программно), добавляя его какселектор для уведомления «UITextFieldTextDidBeginEditingNotification», таким образом:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrollViewToCenter) name:UITextFieldTextDidBeginEditingNotification object:textField];
Когда метод вызывается, он сначала определяет, какое из семи текстовых полей является активным, а затем, используя метод convertPoint: toView:,преобразует исходную точку в точку «self.view».Как только у меня будет точка, из которой происходит текстовое поле, я вычисляю, находится ли оно ниже половины точки на экране, и, если это так, соответствующим образом смещаю представление таблицы, используя метод 'setContentOffset'.
опубликовал это очень подробно, потому что мне пришлось пойти на многое, чтобы выяснить, как это работает, и я подумал, что это может спасти кого-то другого в этот раз.Я надеюсь, что это было полезно.