¿Hay alguna manera de saber si un UITableView
se está desplazando hacia arriba o hacia abajo?Cómo saber de qué manera se está desplazando UITableView
Respuesta
Puede rastrear la diferencia en el desplazamiento del contenido. Mantenga el anterior en una variable miembro/estática y verifique con la corriente. Si el valor anterior es inferior, el desplazamiento se dirigió hacia abajo y viceversa.
UITableView
es una subclase UIScrollView
, por lo tanto usted puede establecerse como UIScrollViewDelegate
y obtener devoluciones de vista delegar devoluciones de llamada.
El argumento para uno de estos métodos delegados (-scrollViewDidScroll:
) es la vista de desplazamiento que se desplazó, puede compararlo con las vistas de la tabla para saber cuál fue el que se desplazó.
Lo sentimos, leí mal su pregunta. Pensé que quería saber que se está desplazando la vista de tabla (me perdí el "camino").
Para saber la dirección, puede mantener el desplazamiento anterior en una variable y ver si el delta (actual.y - anterior.y) es positivo (desplazamiento hacia abajo) o negativo (desplazamiento hacia arriba).
-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint currentOffset = scrollView.contentOffset;
if (currentOffset.y > self.lastContentOffset.y)
{
// Downward
}
else
{
// Upward
}
self.lastContentOffset = currentOffset;
}
¿Podríamos hacer de esta manera?
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if ([scrollView.panGestureRecognizer translationInView:scrollView].y > 0) {
// down
} else {
// up
}
}
Esto enviará hacia arriba o hacia abajo dependiendo del contacto inicial, por lo que si usted comenzará a PT200, PT100 a moverse hacia arriba y hacia abajo para pt199, obtendrá hasta el estado de todos modos –
perfecto! Esto resuelve el problema de la dirección de desplazamiento de cambio de rebote UIScrollView. – chicobermuda
Esto no es cierto, si se desplaza hacia abajo permite decir 100.0pt y 1.0pt hacia arriba, su código activará la parte baja (translation.y será 99,0) –
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset{
if (velocity.y > 0){
NSLog(@"up");
}
if (velocity.y < 0){
NSLog(@"down");
}
}
Esta parece ser la mejor respuesta ... –
impresionante .. !! !:) – itsji10dra
Y si quieres hacer un pull de homebrew para refrescar (u otros comportamientos relativos de offset de vista), este método es donde te unirías cuando detectes el desplazamiento de scrollview - NO el 'targetContentOffset' (que es donde terminaría el scroll después de la animación): 'if (scrollView.contentOffset.y <0) { // scroll está por encima de 0,0 aka espacio negativo donde la vista de actualización sería }' –
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if (yourTableView.isDragging || yourTableView.isDecelerating)
{
// your tableview is scrolled.
// Add your code here
}
}
aquí hay que reemplazar su nombre tableview en lugar de "yourTableView".
yourTableView.isDragging - Devuelve SÍ si el usuario ha comenzado a desplazarse. esto puede requerir un tiempo y/o distancia para avanzar.
yourTableView.isDecelerating - Devuelve SÍ si el usuario no está arrastrando (retoque) pero la vista de desplazamiento todavía se está moviendo.
Puede hacerlo implementando el método delegado UIScrollView
de esta manera, es elegante.
PS: lastOffset
y scrollingUpward
es propiedad de ViewController.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint currentOffset = scrollView.contentOffset;
self.scrollingUpward = currentOffset.y > self.lastOffset.y;
self.lastOffset = currentOffset;
}
override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if targetContentOffset.memory.y < scrollView.contentOffset.y {
//println("Going up!")
} else {
// println("Going down!")
}
}
- 1. Cómo saber si el usuario está desplazando la vista de cuadrícula de datos
- 2. NSURLRequest no se activará mientras UIScrollView se está desplazando
- 3. Cómo detectar que UIScrollView se está desplazando o que está arrastrando
- 4. ¿Cómo se puede saber qué panel de Tmux está enfocado?
- 5. ¿Cómo saber cuándo se completa una animación UITableView?
- 6. Cómo saber cuándo UITableView se desplazó hacia abajo en iPhone
- 7. ¿Por qué se está liberando demasiado? UINavigationController/UITableView
- 8. ¿Cómo saber qué elemento de arrastre está sobre qué elemento?
- 9. ¿Cómo saber qué botón de opción está seleccionado?
- 10. jscrollpane bloque desplazando padre
- 11. ¿Cómo saber qué aplicación JAXB se utiliza?
- 12. document.body.scrollTop siempre es 0 en IE incluso cuando se está desplazando
- 13. ¿Cómo saber qué tecla SHIFT se presionó?
- 14. ¿Cómo saber qué proceso está usando un archivo dado?
- 15. Android Cómo saber qué casilla de verificación está seleccionada
- 16. cómo saber qué está causando "cv :: Exception at memory location"?
- 17. ¿Cómo puedo saber qué fuente está usando Chrome?
- 18. ¿Cómo saber qué método está tomando mucho tiempo?
- 19. ¿Cómo puedo saber qué versión de Java está usando Tomcat6?
- 20. ¿Cómo saber a qué puerto está conectado un dispositivo USB?
- 21. UITableView/UIScrollVer cómo saber automáticamente cuándo cambia ContentSize?
- 22. ¿Cómo saber qué recurso drawble se usa?
- 23. ¿Cómo saber si la actualización MATERIALIZED VIEW se está ejecutando?
- 24. ¿Cómo puedo saber si un UITableView contiene un NSIndexPath específico?
- 25. ¿Cómo puedo saber cuándo ha terminado una animación UITableView?
- 26. ¿Cómo puede saber mi programa si Delphi se está ejecutando?
- 27. ¿Cómo se puede saber qué objeto se está tocando en touchesBegan?
- 28. ¿Cómo saber qué está haciendo Eclipse en el entorno?
- 29. Cómo saber si el servidor de emacs se está ejecutando
- 30. Cómo saber qué optimizaciones está usando bjam para generar impulso
Hola necesito ayuda para lograrlo. ¿dónde estableces self.lastContentOffset? gracias :) – veereev
Hola solo defino una propiedad en su clase de delegado de desplazamiento. @property (assign, nonatomic) CGPoint lastContentOffset; – citydeer
voltear respuesta impresionante, gracias :) @citydeer – Supertecnoboff