2012-06-28 10 views
10

Mam UITableViewController z około 20 komórkami statycznymi, niektóre z nich mają w sobie UITextField, a niektóre służą tylko do zaznaczenia za pomocą znacznika. Tabela ma około 1,5 odsłon, więc przewijanie jest wymagane, aby uzyskać niższe pola tekstowe.Sterownik UITableViewController nie przewija widok po wyświetleniu klawiatury

Kiedy klikam w polu tekstowym na dole tabeli, klawiatura wyskakuje tak, jak powinna, ale pojawia się ona nad komórką/polem tekstowym.

Miałem wrażenie (z dokumentów Apple i innych), że klasa UITableViewController obsługuje automatyczne przewijanie widoku, gdy klawiatura pojawia się w dowolnej orientacji i przesuwa widok tabeli tak, że komórka jest widoczna, to się nie dzieje chociaż.

IOS 5.1, iPad Portret.

+1

możliwy duplikat [Jak przewinąć UITableviewcell przewinąć w górę, gdy pojawi się klawiatura?] (Http://stackoverflow.com/questions/8338737/how-to-scroll-the-uitableviewcell-scroll-up-when-the -keyboard-pojawia się) – rishi

+1

Nie dupę IMO, ten dotyczy statycznej komórki Cell TVC –

+0

Łącze, które Rishi wskazywał zbyt, działało dla mojej statycznej zawartości tabeli. Ale tak jak powiedziałem, chciałem, aby miało to działać automatycznie podczas korzystania z UITableViewController bez potrzeby programowego zarządzania przewijaniem. – GeoffCoope

Odpowiedz

69

Upewnij się, że jeśli są nadrzędne viewWillAppear że zadzwonisz

[super viewWillAppear:animated]; 

Jeśli nie, Zwój View nie będzie przewijać się prawidłowo.

Swift

super.viewWillAppear(animated) 
+0

Nie korzystam jeszcze z tej metody. i tak dziękuję – GeoffCoope

+1

To zadziałało dla mnie (i powinienem był dzwonić tak i tak). Dzięki. – Snips

+2

Oh! Dziękuję bardzo, myślałem, że nigdy więcej nie sprawię, że zadziała automatycznie) – DanSkeel

1

wpadłem na ten problem samodzielnie. Właśnie przekształcony moim zdaniem kontrolera z UIViewController do UITableViewController oprócz dodawania połączenia [super viewWillAppear:animated];, trzeba będzie usunąć te linie:

[self.tableView setDataSource:self]; [self.tableView setDelegate:self];

Jako że nie są już potrzebne i setDelegate zakłóca klawiatura przewijanie zachowanie.

4

Uważam, że żadna z tych odpowiedzi nie jest poprawna. Po chwili zauważam, że jeśli wciśniesz kontroler, to nie zadziała ... ale jeśli zaprezentujesz go modalnie .. stół automatycznie przewinie się do użytego pola tekstowego.

Mam nadzieję, że każdy zaoszczędza czas i stres.

+0

Miałem podobny problem, w którym używam widoku kontenera. – RyanJM

Powiązane problemy