2013-01-08 7 views
6

Podczas korzystania z selectRowAtIndexPath:animated:scrollPosition: przechodzę pod numer UITableViewScrollPositionNone. Mimo nazwy oczekuję, że widok tabeli będzie się przewijał w razie potrzeby, aby wiersz był widoczny (i nie przewijać, jeśli jest już widoczny).UITableViewScrollPositionNone nie przewija widoku tabeli

UITableViewScrollPositionNone - Widok tabeli przewija wiersz zainteresowania, aby był w pełni widoczny przy minimalnym ruchu. Jeśli rząd jest już w pełni widoczny, nie ma przewijania. Na przykład, jeśli wiersz znajduje się nad widocznym obszarem, zachowanie jest identyczne z określonym przez parametr UITableViewScrollPositionTop. To jest domyślne.

Jednak stwierdzam, że widok tabeli w ogóle się nie przewija. Jeśli używam UITableViewScrollPositionTop lub UITableViewScrollPositionBottom, widok tabeli przewija się zgodnie z oczekiwaniami.

Czy to możliwe, że dokumentacja jest nieprawidłowa? Czy może czegoś brakuje?

+0

Dokumentacja jest zdecydowanie poprawna. Czy tworzysz animację scrollTo? – jakenberg

+0

Po prostu wywołuję [self.tableView scrollToRowAtIndexPath: myPath atScrollPosition: UITableViewScrollPositionNone animated: YES] we wszystkich trzech przykładach. –

+0

Czy potwierdziłeś, że twoje granice zostały prawidłowo ustawione? – jakenberg

Odpowiedz

0

Musisz się upewnić, że widok zawartości widoku tabeli zawiera spację. Kiedyś trzeba przewinąć widok tabeli, ponieważ użytkownik stuknął pole tekstowe, a klawiatura podniosła się, potrzebuję rozszerzenia zawartości widoku tabeli do wysokości wysokości klawiatury, aby można było przewijać widok tabeli. Tak:

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardFrame.size.height, 0.0); 
self.tableView.contentInset = contentInsets; 
self.tableView.scrollIndicatorInsets = contentInsets; 
[self.tableView scrollToRowAtIndexPath:self.currentEditingCellIndexPath atScrollPosition:UITableViewScrollPositionNone animated:YES]; 
4

Dokumentacja dla UITableView za selectRowAtIndexPath: animowane: scrollPosition: ma przekrój, który opisuje to, czego doświadczają.

Rozważania specjalne Uboczny UITableViewScrollPositionNone będzie wynik w żadnym przewijania, zamiast minimalnej przewijania opisane dla tej stałej. Aby przewinąć do nowo wybranego wiersza za pomocą przewijania minimum , wybierz wiersz za pomocą tej metody z UITableViewScrollPositionNone, a następnie wywołaj scrollToRowAtIndexPath: atScrollPosition: animated: with UITableViewScrollPositionNone.

Nadzieję, że pomaga!