tapgesture recognizer ios objective-c uicollectionview uigesturerecognizer uipangesturerecognizer

ios - tapgesture recognizer swift



ios UICollectionView detectan la dirección de desplazamiento (3)

Estaba tratando de encontrar una forma de detectar si el usuario está tratando de tirar vertical u horizontalmente del scrollView. Te doy mi solución, espero que pueda ser útil para cualquiera:

CGPoint _lastContentOffset; - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { _lastContentOffset = scrollView.contentOffset; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (ABS(_lastContentOffset.x - scrollView.contentOffset.x) < ABS(_lastContentOffset.y - scrollView.contentOffset.y)) { NSLog(@"Scrolled Vertically"); } else { NSLog(@"Scrolled Horizontally"); } }

Este trabajo se encuentra para mí y lo uso para evitar que scrollView se mueva horizontalmente cuando se desplaza verticalmente y en sentido opuesto.

Tengo una collectionView. Quiero detectar la dirección de desplazamiento. Tengo dos estilos de animación diferentes para desplazarme hacia abajo y desplazarme hacia arriba. Así que debo aprender la dirección de desplazamiento.

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

Esto es solo trabajo con los dedos tocados. No trabajo para mi


Prueba esto:

Agregue esto en algún lugar de su encabezado:

@property (nonatomic) CGFloat lastContentOffset;

A continuación, anule el método scrollViewDidScroll: :

#pragma mark - UIScrollViewDelegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (self.lastContentOffset > scrollView.contentOffset.y) { NSLog(@"Scrolling Up"); } else if (self.lastContentOffset < scrollView.contentOffset.y) { NSLog(@"Scrolling Down"); } self.lastContentOffset = scrollView.contentOffset.y; }

¿Se encuentra en Encontrar la dirección de desplazamiento en UIScrollView?


esta es la mejor manera de obtener la dirección de desplazamiento, espero que esto te ayude

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { CGPoint targetPoint = *targetContentOffset; CGPoint currentPoint = scrollView.contentOffset; if (targetPoint.y > currentPoint.y) { NSLog(@"up"); } else { NSLog(@"down"); } }