iphone - source - Evento UITableView Scroll
uitableviewcell lifecycle (3)
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?
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) {
}
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 devolución de llamada 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;
}
...
}