Ho una vista tabella con celle statiche. Una cella contiene uno UITextView
e lo heightForRowAtIndexPath:
viene calcolato dinamicamente in modo che la cella sia sempre abbastanza alta da contenere il testo (quella parte ha funzionato in iOS 7, in realtà, poiché non è più possibile chiedere semplicemente textView per il suo contentSize
).UITableView in iOS 7 non scorre nella posizione corretta durante la modifica di UITextView nella cella
Quando tocco all'interno della visualizzazione del testo per iniziare a modificare, la tastiera si anima, i contentInsets sul tavoloView vengono regolati automaticamente per tener conto di ciò (ovvero, il margine inferiore di 216 px per l'orientamento verticale di iPhone), il cursore/cursore diventa visibile, quindi la vista tabella scorre in un'altra posizione. Finisce per sembrare un rimbalzo.
Ecco un video di questo nel simulatore: https://www.dropbox.com/s/htdbb0t7985u6n4/textview-bounce.mov
Si noti che per un secondo il punto di inserimento è appena sopra la tastiera. Ho registrato la vista tabella contentOffset
e posso vederla scorrere fino a un valore piacevole e poi improvvisamente "girarci" e scorrere indietro.
Stranamente, se accendo animazioni lente nel simulatore il problema scompare; l'inversione contentOffset
non si verifica e le cose funzionano come previsto (ovvero, il comportamento di iOS 6).
Ecco il video con animazioni lente: https://www.dropbox.com/s/nhn7vspx86t4exb/textview-nobounce.mov
Note applicative:
- La vista del testo è rosa e ha vincoli di layout automatico che lo tengono inchiodato al cellulare a distanza 0 (eccetto lato sinistro, che è 10pts)
- Sto utilizzando
boundingRectWithSize:
per calcolare l'altezza di visualizzazione tabella, regolando per lineFragmentPadding e qualsiasi insetto superiore/inferiore. Sembra funzionare. - Ho impostato il textView di non essere scorrevole, ma non ha notato nulla di diverso quando
scrollEnabled
== SI - Si tratta di un controller di vista tavolo e
automaticallyAdjustsScrollViewInsets
== SI
Ho esattamente lo stesso problema, ho rintracciato al contentSize del corso il ripristino UITableView dopo faccio un beginupdates UITableView e endupdates – perrohunter