UITableView w iOS 7 nie przewija się do poprawnej lokalizacji podczas edycji UITextView w komórce
Mam widok tabeli ze statycznymi komórkami. Jedna komórka zawieraUITextView
iheightForRowAtIndexPath:
jest obliczany dynamicznie, dzięki czemu komórka jest zawsze na tyle wysoka, aby pomieścić tekst (ta część zajęła się trochę pod iOS 7, ponieważ nie można już po prostu zapytać o tekstWidok na jegocontentSize
).
Gdy stuknę w widoku tekstowym, aby rozpocząć edycję, animacja klawiatury na miejscu, ustawienia zawartości na stole View są automatycznie dostosowywane do tego (tj. Dolna wstawka 216 pikseli dla orientacji pionowej iPhone'a), kursor / karetka staje się widoczny, i następnie widok tabeliprzewija do innej lokalizacji. Kończy się jak odbicie.
Oto film na ten temat w symulatorze:https://www.dropbox.com/s/htdbb0t7985u6n4/textview-bounce.mov
Zauważ, że przez sekundę daszek znajduje się tuż nad klawiaturą. Rejestrowałem widok tabelicontentOffset
i widzę, że przewija do miłej wartości, a potem nagle „odwraca się” i przewija do tyłu.
Co dziwne, jeśli włączę wolne animacje w symulatorze, problem zniknie;contentOffset
Odwrócenie nie następuje i wszystko działa tak, jak się tego spodziewam (tj. zachowanie w systemie iOS 6).
Oto film z powolnymi animacjami:https://www.dropbox.com/s/nhn7vspx86t4exb/textview-nobounce.mov
Uwagi dotyczące wdrożenia:
Widok tekstu jest różowy i ma ograniczenia AutoLayout, które utrzymują go przypiętym do komórki w odległości 0 (z wyjątkiem lewej strony, która wynosi 10 punktów)używamboundingRectWithSize:
aby obliczyć wysokość widoku tabeli, dostosowując do liniiFragmentPadding i wszelkich wstawek góra / dół. Wydaje się działać.Ustawiłem textView, aby nie był przewijany, ale nie zauważyłem niczego innegoscrollEnabled
== TAKJest to kontroler widoku tabeli iautomaticallyAdjustsScrollViewInsets
== TAK