Detectar la dirección del desplazamiento UICollectionView, cargar datos de REST

Suponiendo una configuration estándar (arriba / abajo), me gustaría detectar cuándo un usuario está desplazando su UIColletionView hacia arriba o hacia abajo (que es la subclass de UIScrollView y se ajusta a UIScrollViewDelegate ). No veo ninguna información directamente del delegado para detectar esto, aunque puedo estar buscando algo.

Si sé en qué dirección se desplaza el usuario, puedo utilizar estos methods UICollectionViewDatasource para determinar si debo cargar más datos del server REST o borrar información que ya tengo para administrar el espacio de memory fijo.

// Si se desplaza hacia abajo, aparece la sección

 - (UICollectionReusableView *)collectionView:(UICollectionView *)cv viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { 

// Si se desplaza hacia abajo, la última celda en la sección está desapareciendo.

 - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{ 

// Si se desplaza hacia arriba, aparecerá la última celda en la sección

 - (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

// Si se desplaza hacia arriba, la sección está desapareciendo

 - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(UICollectionReusableView *)view forElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath{ 

Puede verificar la propiedad de UIScrollView (que UICollectionView henetworkinga de) panGestureRecognizer y hacer algo como esto:

 CGPoint scrollVelocity = [collectionView.panGestureRecognizer velocityInView:collectionView.superview]; if (scrollVelocity.y > 0.0f) { NSLog(@"going down"); } else if (scrollVelocity.y < 0.0f) { NSLog(@"going up"); } 

Swift 3.1 :

 let scrollVelocity = collectionView.panGestureRecognizer.velocityInView(collectionView.superview) if (scrollVelocity.y > 0.0) { print("going down") } else if (scrollVelocity.y < 0.0) { print("going up") } 

También puedes usar esto:

 CGPoint translation = [collectionView.panGestureRecognizer translationInView:collectionView.superview]; if (translation.y > 0) { NSLog(@"DOWN"); } else { NSLog(@"UP"); } 

Más preciso