UITableViewController не имеет прокрутки, когда появляется клавиатура

У меня есть UITableViewController с примерно 20 статическими ячейками, некоторые из этих ячеек имеют UITextField внутри них, а некоторые - только для выбора с помощью галочки. Таблица составляет около 1,5 просмотров, поэтому прокрутка требуется для получения нижних текстовых полей.

Когда я нажимаю внутри текстового поля в нижней части таблицы, клавиатура появляется, как следует, но это появляется над ячейкой/текстовым полем.

У меня было впечатление (из документов Apple и в других местах), что класс UITableViewController обрабатывает прокрутку представления автоматически, когда клавиатура появляется в любой ориентации и сдвигает таблицу вверх, чтобы ячейка была видна, это не все же происходит.

IOS 5.1, портрет iPad.

Ответ 1

Убедитесь, что если вы переопределяете viewWillAppear, который вы вызываете

[super viewWillAppear:animated];

Если вы этого не сделаете, прокрутка не будет правильно прокручиваться.

Swift

super.viewWillAppear(animated)

Ответ 2

Я нашел, что эти ответы не верны. Через некоторое время я замечаю, что если вы нажмете контроллер, он не сработает... но если вы представите его по-разному, таблица автоматически перейдет к используемому текстовому полю.

Надеюсь, что это сэкономит время и напряжение любому.

Ответ 3

Я столкнулся с этим вопросом сам. Я просто преобразовал свой контроллер представления из UIViewController в UITableViewController в дополнение к добавлению вызова [super viewWillAppear:animated];, вам нужно будет удалить следующие строки:

[self.tableView setDataSource:self]; [self.tableView setDelegate:self];

Поскольку они больше не нужны, и setDelegate вмешивается в поведение прокрутки клавиатуры.