Evento UITableView Scroll

Quiero detectar si la vista mytable se ha desplazado, intenté todos los eventos táctiles como este:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; //my code } 

pero parece que todos los eventos táctiles no responden al desplazamiento pero solo responden cuando se tocan, mueven, etc.

¿Hay alguna forma de detectar el evento de desplazamiento de UITableView?

Si implementa el protocolo UITableViewDelegate , también puede implementar uno de los métodos UIScrollViewDelegate :

 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

o

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 

Por ejemplo, si tiene una propiedad llamada tableView :

 // ... setting up the table view here ... self.tableView.delegate = self; // ... // Somewhere in your implementation file: - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { NSLog(@"Will begin dragging"); } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"Did Scroll"); } 

Esto se debe a que UITableViewDelegate cumple con UIScrollViewDelegate , como se puede ver en la documentación o en el archivo de encabezado.

Si tiene más de una vista de tabla como la solicitó Solidus, puede convertir la vista de desplazamiento desde la callback a la vista de tabla cuando UITableView se deriva de UIScrollView y luego comparar con las vistas de tabla para encontrar la vista de tabla de origen.

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { UITableView* fromTableView = (UITableView*) scrollView; UITableView* targetTableView = nil; if (fromTableView == self.leftTable) { targetTableView = self.leftTable; } else { targetTableView = self.rightTable; } ... } 

Estos son los métodos de UITableViewDelegate para Swift 3 para detectar cuándo se desplazará o se desplazará una UITableView :

 func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { } func scrollViewDidScroll(_ scrollView: UIScrollView) { }