Ich habe eine Tabellenansicht mit statischen Zellen. Eine Zelle enthält eine UITextView
und die heightForRowAtIndexPath:
wird dynamisch berechnet, so dass die Zelle immer groß genug ist, um den Text aufzunehmen (dieser Teil hat unter iOS 7 tatsächlich etwas Arbeit gemacht, da es nicht länger möglich ist, einfach die textView nach seiner contentSize
zu fragen).UITableView in iOS 7 Scrollen nicht zum richtigen Speicherort beim Bearbeiten von UITextView in Zelle
Wenn ich in der Textansicht tippe, um mit der Bearbeitung zu beginnen, animiert die Tastatur an Ort und Stelle, die contentInets auf der tableView werden automatisch angepasst, um dem Rechnung zu tragen (dh untere Einfügung von 216px für iPhone Hochformat), der Cursor/Caret wird sichtbar, und dann scrollt die Tabellenansicht zu einem anderen Speicherort. Es sieht aus wie ein Sprung.
Hier ist ein Video von diesem im Simulator: https://www.dropbox.com/s/htdbb0t7985u6n4/textview-bounce.mov
Beachten Sie, dass für eine Sekunde der Einfügemarke gerade oberhalb der Tastatur sind. Ich habe die Tabellenansicht contentOffset
protokolliert und ich kann sehen, wie es sich auf einen netten Wert scrollt und dann plötzlich "umdreht" und zurück scrollt.
Seltsamerweise, wenn ich langsame Animationen im Simulator einschalte, verschwindet das Problem; Die contentOffset
Umkehrung passiert nicht und die Dinge funktionieren so, wie ich es erwarte (zB iOS 6 Verhalten).
Hier ist das Video mit langsamen Animationen: https://www.dropbox.com/s/nhn7vspx86t4exb/textview-nobounce.mov
Hinweise zur Implementierung:
- Die Textansicht ist rosa und hat Automatisches Layout Einschränkungen, die es in der Zelle im Abstand 0 (mit Ausnahme der linken Seite festgesteckt halten, was ist 10pts)
- Ich benutze
boundingRectWithSize:
, um die Höhe der Tabellenansicht zu berechnen, Anpassung für lineFragmentPadding und alle oberen/unteren Einfügungen. Scheint zu arbeiten. - Ich habe die Textview gesetzt nicht scrollbaren sein, aber gar nicht bemerkt etwas anderes, wenn
scrollEnabled
== JA - Dies ist eine Tabelle View-Controller und
automaticallyAdjustsScrollViewInsets
== JA
Ich habe genau das gleiche Problem, ich habe es mit dem Content des UITableView zurückgesetzt wird verfolgt, nachdem ich ein UITableView beginupdates und EndUpdates tun – perrohunter