что у меня есть:
UITableView с ячейкой. Эта ячейка имеет UITextView в качестве подпредставления. Все делегаты и источники данных установлены правильно. Высота ячейки правильно получена из heightForRow и т. д. Пользователь вводит текст в textView.
что я пытаюсь сделать:
Я хочу, чтобы ячейка обновляла свою высоту по мере ввода пользователем БЕЗ отказа от textView в качестве первого ответчика. Во многих сообщениях на stackOverflow говорится, что для этого работает пустое поле beginUpdates/endUpdates.
Что я пробовал:
1- Я вызвал beginUpdates и endUpdates (для tableView) внутри textViewDidChange. Ничего не случилось. (примечание: все делегаты установлены правильно).
2- Я даже вызвал beginUpdates и endUpdates внутри textViewDidEndEditing, чтобы убедиться (чтобы убедиться, что это работает после того, как textView уходит в отставку в качестве первого респондента). Это работает (размер ячейки изменяется, когда textView уходит в отставку как firstResponder).
3- Затем я попытался перезагрузить данные внутри textViewDidChange. Это работает, за исключением того, что он отказывается от textView в качестве первого ответчика (клавиатура исчезает при каждом вводе символа).
4- Затем я попытался перезагрузить данные, а затем напрямую сказал textView снова стать первым ответчиком (чтобы клавиатура оставалась включенной). Это работает, но это приводит ко многим проблемам с положением курсора и автокоррекцией и возвратом в textView.
5- Затем я попытался перезагрузить данные, а затем вернул NO в textViewShouldEndEditing, когда я хотел, чтобы клавиатура оставалась поднятой, но по какой-то причине ячейка не обновляла свою высоту.
6- Наконец, я попробовал reloadRowsAtIndexPaths и т. д., а затем вернул NO в textViewShouldEndEditing, но это дало мне ошибку, говорящую о том, что он не может удалить объект, который отказывается resignFirstResponder.
Я также пробовал такие методы, как reloadInputViews и setNeedsDisplay, setNeedsLayout и т. д. внутри textViewDidChange, но ничего не происходит.
Мой вопрос:
Мне кажется, что № 2 предполагает, что ячейка не может обновлять свою высоту, пока одно из ее подвидов является первым ответчиком. Так ли это? Есть ли документация по этому поводу (я не нашел)?
Почему не работают beginUpdates/EndUpdates? Известны ли или распространены случаи, когда это не работает? Может быть что-то не так с тем, как я настраиваю вещи? Но изменение размера отлично работает с № 3 и № 4 (указывая на то, что все мои методы делегата и т. Д. Установлены правильно).
Извините за очень длинный вопрос, но может ли кто-нибудь дать какие-либо идеи, кроме тех, которые я разместил? У меня такое чувство, что это какая-то ОЧЕНЬ глупая и очевидная вещь, которую я упускаю (как обычно)...
Кстати, я использую и симулятор iOS, и реальный iPhone с 5.1.