Mam widok tabeli, który wykonuje animację, gdy użytkownik przewija w dół na UITableView (push thumb up) i inną animację, gdy użytkownik przewija w górę (Push thumb down) na UITableView .Wykrywanie dolnego "odbicia" z UITableView
Problem polega na tym, że użytkownik osiąga dno UITableView i odskakuje, stół rejestruje ruch w górę, a następnie w dół, wykonując w ten sposób animację, gdy nie powinna.
To samo zachowanie się dzieje podczas przewijania do góry; Jednak jestem w stanie wykryć tak:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
self.lastContentOffset = scrollView.contentOffset;
}
-(void) scrollViewDidScroll:(UIScrollView *)scrollView {
// Check if we are at the top of the table
// This will stop animation when tableview bounces
if(self.tableView.contentOffset.y < 0){
// Dont animate, top of tableview bounce
} else {
CGPoint currentOffset = scrollView.contentOffset;
if (currentOffset.y > self.lastContentOffset.y) {
// Downward animation
[self animate:@"Down"];
} else {
// Upward
[self animate:@"Up"];
}
self.lastContentOffset = currentOffset;
}
}
Działa to doskonale, ale dla życia mnie nie mogę dowiedzieć się, if warunek wykryć dno, jak również. Jestem pewien, że to proste i po prostu nie mogę tego zrozumieć.
To wszystko! Mógłbym przysiąc, że próbowałem tego, ale bardzo możliwe, że zawiodłem moich operatorów. Wielkie dzięki! –
Musisz uwzględnić contentInset. Jeśli ustawione na coś większego niż zero, to nie zadziała. Użyj tego zamiast: 'if (self.tableView.contentOffset.y - self.tableView.contentInset.bottom> = self.tableView.contentSize.height - self.tableView.bounds.size.height)'. Działa to również dla wszystkich podklas UIScrollView (UICollectionView i UITableView). –
To NIE będzie działać w przypadku scenorysów i klas wielkości. Sprawdź moją odpowiedź tutaj. – Ashok