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");
}
}