Pregunta

Tengo una celda de vista de tabla personalizada que maneja los gestos de los usuarios. Sin embargo, incluso si tengo el Toque exclusivo configurado en SÍ, en el momento en que el valor de y cambia en cualquier cantidad, comienza el desplazamiento, incluso si estoy en medio de manejar los eventos táctiles. ¿Cómo evito que la tabla se desplace cuando estoy manejando eventos táctiles en la celda?

¿Fue útil?

Solución

Por lo tanto, la forma correcta de manejar condicionalmente depende de la superView. Para algunas vistas y eventos (como UITableView select), debe reenviar toquesBegan: event a nextResponder, realizar un seguimiento de su gesto, reenviar toques Movido: events al nextResponder hasta que detecte su gesto y, cuando se active, enviará un toque. al siguienteResponder, y oculte todos los demás eventos del siguiente respondedor (tocaEnded: y tocaCancelled :) hasta que reciba los toquesEnded: o toqueCancelled: usted mismo.

Sin embargo, en un UIScrollView, existe el caso especial de que no depende de ser el siguienteResponder para manejar eventos de desplazamiento (el desplazamiento es más probable que se detecte en métodos como hitTest :). Así que no importa lo que haga con respecto al reenvío o eventos o no, el desplazamiento aún ocurre. La única forma de evitar que ocurra el desplazamiento es inhabilitar el desplazamiento en la vista principal tan pronto como se detecte su gesto, y luego volver a habilitar el desplazamiento cuando finalice o se cancele.

Otros consejos

Creo que necesitas subclase UITableView e implementar hitTest: withEvent: Así es como lo hice para una celda personalizada que creé para deslizarse de izquierda a derecha dentro de la celda:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    NSIndexPath *indexPath = [self indexPathForRowAtPoint:point];
    UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath];

    if ([cell isKindOfClass:[MyCustomCell class]])
    {
        return cell;
    }

    return [super hitTest:point withEvent:event];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top