Ho una vista tabella che esegue un'animazione quando l'utente scorre verso il basso su un UITableView (spingere il pollice su) e una diversa animazione quando l'utente scorre verso l'alto (Spingi il pollice verso il basso) su un UITableView .Rilevamento del "rimbalzo" in basso di UITableView
Il problema è quando l'utente raggiunge il fondo di un UITableView e rimbalza, la tabella registra un movimento verso l'alto e quindi verso il basso, esercitando così l'animazione quando non dovrebbe.
Questo stesso comportamento si verifica quando si scorre verso l'alto; tuttavia, sono in grado di rilevare in questo modo:
- (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;
}
}
Questo funziona perfettamente, ma per la vita di me non riesco a capire una condizione if per rilevare il fondo pure. Sono sicuro che sia semplice e non riesco a capirlo.
Questo è tutto! Avrei giurato di averlo provato, ma è molto probabile che abbia incasinato i miei operatori. Molte grazie! –
È necessario account per contentInset. Se impostato su qualcosa di maggiore di zero, questo non funzionerà. Usalo invece: 'if (self.tableView.contentOffset.y - self.tableView.contentInset.bottom> = self.tableView.contentSize.height - self.tableView.bounds.size.height)'. Inoltre, questo funziona per tutte le sottoclassi di UIScrollView (UICollectionView e UITableView). –
Questo NON funzionerà con storyboard e classi di dimensioni. Controlla la mia risposta qui. – Ashok