12
votes

Comment déterminer si l'utilisateur a défilé au bas de l'UitailView?

Comment puis-je déterminer si l'utilisateur a défilé dans la dernière cellule / bas de l'utableview?


0 commentaires

3 Réponses :


5
votes

Utiliser nsarray * chemins = [TableView IndexPathsforvisiblers]; . Ensuite, vérifiez si le dernier objet de cette matrice est l'index de la cellule finale.

Source: Une autre question


0 commentaires

29
votes

UitailView hérités de UiscrollView et Scroll View expose une propriété contentoffset code> (Documentation ICI ).

Utilisez-le avec un peu de mathématiques pour déterminer si le conteneurOffset est dans cadre.size.height code> du bas. p>

mise à jour: Voici un coup de poignard dans une formule qui vous donnera ce que vous voulez: P>

if(tableView.contentOffset.y >= (tableView.contentSize.height - tableView.frame.size.height)) {
  //user has scrolled to the bottom
}


3 commentaires

Le code est presque là! Je peux détecter le fond, mais lorsque je vais en bas, le code dans le bloc IF est appelé plusieurs fois si l'utilisateur détient la position de défilement. Comment puis-je résoudre?


Peut-être que vous pourriez ajouter une minuterie lors du défilement, invalider tout minuteur actuel, et une fois que la minuterie fente (par exemple après 250ms), vous pouvez exécuter votre code. Sans plus de détails, il est très difficile de suggérer la bonne chose cependant.


mettre ce code dans ScrollViewDidendDeceleratier, cela s'assurera qu'il ne tire qu'une seule fois au lieu de plusieurs fois.



0
votes

Grâce aux versions IOS plus récentes, la fonction WilldisplayCell est facile:

func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {

}


1 commentaires

Cela s'appellera lorsque les éléments ont été insérés et que la table est automatiquement défilée sans interactions utilisateur.