UITableView в iOS 7 не прокручивается до правильного местоположения при редактировании UITextView в ячейке
У меня есть табличное представление со статическими ячейками. Одна ячейка содержитUITextView
иheightForRowAtIndexPath:
рассчитывается динамически, так что ячейка всегда достаточно высока, чтобы вместить текст (эта часть потребовала некоторой работы под iOS 7, на самом деле, так какбольше нельзя просто спросить у textView егоcontentSize
).
Когда я нажимаю в текстовом представлении, чтобы начать редактирование, клавиатура анимируется на место, contentInsets в tableView автоматически настраиваются для учета этого (т. Е. Нижняя вставка 216px для портретной ориентации iPhone), курсор / каретка становится видимой, и тогда табличное представлениепрокручивает в другое место, Это в конечном итоге выглядит как отказов.
Вот'видео этого в симуляторе:https://www.dropbox.com/s/htdbb0t7985u6n4/textview-bounce.mov
Обратите внимание, что на секунду каретка находится чуть выше клавиатуры. Я'я регистрировал табличное представлениеcontentOffset
и я вижу, как это прокручивается до хорошего значения, а затем внезапноповернись" и прокрутите назад.
Как ни странно, если я включаю медленную анимацию в симуляторе, проблема исчезает;contentOffset
разворот не делаетэто происходит, и все работает, как я ожидаю (то есть поведение iOS 6).
Вот'Видео с медленной анимацией:https://www.dropbox.com/s/nhn7vspx86t4exb/textview-nobounce.mov
Замечания по реализации:
Текстовое представление имеет розовый цвет и имеет ограничения AutoLayout, которые держат его прикрепленным к ячейке на расстоянии 0 (кроме левой стороны, которая составляет 10 точек).м используюboundingRectWithSize:
рассчитать высоту представления таблицы, корректируя lineFragmentPadding и любые верхние / нижние вставки. Кажется, работает.Я установил textView, чтобы не быть прокручиваемым, но нене замечаю ничего другого, когдаscrollEnabled
== ДАЭто контроллер табличного представления иautomaticallyAdjustsScrollViewInsets
== ДА