Подтвердить что ты не робот

UITableView beginUpdate/endUpdate вызывает прокрутку вверх

Я пытаюсь разобраться с этой слишком распространенной проблемой расширения UITextView внутри растущего UITableViewCell UITableView, и я почти там, за исключением одной маленькой вещи.

У меня есть UITableView, у которого есть пользовательский UITableViewCell. Мой UITableView использует новую динамическую высоту ячейки iOS8 с помощью self.tableView.estimatedRowHeight и self.tableView.rowHeight = UITableViewAutomaticDimension;, которая увеличивает высоту ячейки на основе ее автоматического макета.

Я могу правильно вырастить кадр UITextField, а высота ячеек UITableView действительно растет, но каждый раз, когда я вызывал self.tableView beginUpdates и соответствующий endUpdates, вся моя прокрутка в представлении tableView заставляет прокручивать верх таблицы. У меня есть метод, который прокручивается до позиции каретки, но, как вы можете себе представить, каждый раз, когда создается новая строка в UITextView, UITableView прокручивается до самого верха, а затем до позиции каретки, и это чертовски чертовски.

У кого-нибудь есть идеи? При необходимости я могу предоставить видео. Ура, Mike

4b9b3361

Ответ 1

Мне тоже понравилось, и похоже, что проблема self.tableView.estimatedRowHeight. Когда я сделал оценку достаточно большой, проблема прекратилась.

Я добавил это вместо этого, и он хорошо работает до сих пор:

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewAutomaticDimension;
}

Ответ 2

Я не могу прокомментировать ответ akiraspeirs, но установив self.tableView.estimatedRowHeight на точную высоту моей ячейки до, любое изменение размера произойдет избавился от странной прокрутки. Его второе решение не сработало в моем случае.