Domanda

Ho una cella di visualizzazione tabella personalizzata che gestisce i gesti degli utenti. Tuttavia, anche se ho impostato exclusiveTouch su YES, nel momento in cui il valore y cambia di qualsiasi importo, inizia lo scolling, anche se sono nel mezzo della gestione degli eventi touch. Come posso impedire lo scorrimento della tabella quando gestisco gli eventi touch nella cella?

È stato utile?

Soluzione

Quindi, il modo corretto di gestire in modo condizionale purtroppo dipende da superView. Per alcune viste ed eventi (come UITableView select), devi inoltrare i tocchi: Inizia: evento al prossimo Corrispondente, tieni traccia dei tuoi gesti, inoltra tocchi Mi piace: eventi al prossimo Corrispondente fino a quando non rilevi il tuo gesto, e quando viene attivato invii un tocco. al prossimoRisponditore e nascondi tutti gli altri eventi al prossimo risponditore (tocchiEnded: e tocchi Annullato :) fino a quando non ricevi tocchiEnded: o tocchiCancellato: te stesso.

In UIScrollView, tuttavia, c'è il caso speciale in cui non dipende dall'essere il nextResponder per gestire gli eventi di scorrimento (lo scorrimento è molto probabilmente rilevato in metodi come hitTest :). Quindi, indipendentemente da ciò che fai riguardo all'inoltro o agli eventi o meno, lo scorrimento continua comunque. L'unico modo per impedire lo scorrimento è disabilitare lo scorrimento nella vista padre non appena viene rilevato il gesto, quindi riattivare lo scorrimento quando termina o viene annullato.

Altri suggerimenti

Penso che tu debba sottoclassare UITableView e implementare hitTest: withEvent: è così che l'ho fatto per una cella personalizzata che ho costruito per fare scorrere a destra e sinistra all'interno della cella:

- (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];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top