Измените высоту строки UITableView без отклонения клавиатуры - PullRequest
13 голосов
/ 17 марта 2011

У меня есть TextView внутри UITableViewCell. Текст внутри TextView можно редактировать прямо на месте.

TextView увеличивается и сжимается по вертикали в зависимости от количества строк, содержащихся в тексте. До сих пор я не нашел возможности также позволить строке, содержащей TextView, динамически увеличиваться и уменьшаться.

[tableView reloadData];

или

[tableView reloadRowsAtIndexPaths: withRowAnimation:];

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

Есть ли способ изменить высоту отдельной строки в UITableView без отклонения клавиатуры?

Ответы [ 3 ]

33 голосов
/ 14 апреля 2011

Да, вы можете настроить высоту строки по мере ввода.Это не задокументировано и не подкрепляет причину, но все, что вам нужно сделать, это установить новое значение в tableView.rowHeight (или иметь heightForRowAtIndexPath: готовый для вычисления новых высот), затем сделать это:

1 голос
/ 04 июня 2016

Задача состоит в том, чтобы вызвать пересчет высоты строки без повторного использования ячейки (чтобы сохранить текущий респондент).

Можно вызвать moveRowAtIndexPath:toIndexPath: для того же indexPath сразу после изменения высоты

- (void)textInputTableView:(UITableView *)tableView cellHeightDidChangeForIndexPath:(NSIndexPath *)indexPath
{
    [tableView moveRowAtIndexPath:indexPath toIndexPath:indexPath];
}
0 голосов
/ 31 марта 2011

После reloadRowsAtIndexPaths ячейка изменяет значение памяти, поэтому, если вы вызываете становление становления становиться сразу после reloadRowsAtIndexPaths, вы пытаетесь установить как firstResponder старую ячейку, которая не существует (становится, когдаFirstResponder возвращает ложь, и клавиатура завершается).

Решение состоит в том, чтобы снова вызвать cellForRowAtIndexPath, чтобы получить новое значение в памяти перезагруженной ячейки, а затем вызвать сталFirstResponder для этой ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...