uitableviewdatasource uitableviewcontroller uitableviewcell example objective-c iphone cocoa-touch uitableview

objective c - uitableviewcontroller - Detectando desplazamiento de UITableView



uitableviewcontroller swift 4 (3)

Fue mi error, intenté llamar al método antes de volver a cargar la tabla. El siguiente código me ayudó a resolver este problema.

[mytableview reloadData];

[mytableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:btn.tag-1] atScrollPosition:UITableViewScrollPositionTop animated:YES];

Subclasé UITableView (como KRTableView) e implementé los cuatro métodos táctiles (touchesBegan, touchesEnded, touchesMoved y touchesCancelled) para poder detectar cuándo se está manejando un evento táctil en un UITableView. Esencialmente, lo que necesito detectar es cuando el UITableView se desplaza hacia arriba o hacia abajo.

Sin embargo, la subclasificación de UITableView y la creación de los métodos anteriores solo detecta cuándo se produce desplazamiento o movimiento de dedos dentro de una UITableViewCell, no en todo UITableView.

Tan pronto como mueva mi dedo a la siguiente celda, los eventos táctiles no harán nada.

Así es como estoy subclasando UITableView:

#import "KRTableView.h" @implementation KRTableView - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; NSLog(@"touches began..."); } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesMoved:touches withEvent:event]; NSLog(@"touchesMoved occured"); } - (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent *)event { [super touchesCancelled:touches withEvent:event]; NSLog(@"touchesCancelled occured"); } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesEnded:touches withEvent:event]; NSLog(@"A tap was detected on KRTableView"); } @end

¿Cómo puedo detectar cuando el UITableView se desplaza hacia arriba o hacia abajo?


Me gustaría agregar lo siguiente:

Si está trabajando con una UITableView , es probable que ya esté implementando UITableViewDelegate para llenar la tabla con datos.

El protocolo UITableViewDelegate cumple con UIScrollViewDelegate, por lo que todo lo que tiene que hacer es implementar los métodos -scrollViewWillBeginDragging y -scrollViewDidScroll directamente en su implementación de UITableViewDelegate y se invocarán automáticamente si la clase de implementación se configura como delegado en su UITableView.

Si también desea interceptar clics en su tabla y no solo arrastrar y desplazarse, puede extender e implementar su propia UITableViewCell y usar los métodos touchesBegan: allí. Al combinar estos dos métodos, podrá hacer la mayoría de las cosas que necesita cuando el usuario interactúa con UITableView.


No necesita interceptar los métodos del evento. Compruebe los documentos para el protocolo UIScrollViewDelegate e implemente los -scrollViewDidScroll: o -scrollViewWillBeginDragging: según corresponda a su situación.