Domanda

ho utilizzato tocchi hanno cominciato a tracciare ben 8 tocchi, e ognuna si innesca un evento. Questi tocchi possono verificarsi contemporaneamente, o sfalsate.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"Touch Began");
    NSSet *allTouches = [event allTouches];

    for (int i=0; i<allTouches.count; i++) {
        UITouch *touch = [[allTouches allObjects] objectAtIndex:i];
        if (/*touch inside button in question*/) {
            //Trigger the event.    
        }
    }
}

Questo codice funziona per il multitouch, e non ha problemi, ad eccezione di: (vedere se si può intuire)

A causa dei lavori allTouches modo, diventa letteralmente tutti i tocchi. A causa di questo, si scorre tutti i tocchi che sono attualmente attivi quando l'utente avvia un altro tocco, e quindi attiva l'evento di uno dei pulsanti per due volte.

Ex: Johnny è premendo il pulsante 1. Evento 1 si verifica. Johnny lascia il dito sul tasto 1, e preme il tasto 2. verifica Evento 2, ma il tasto 1 è ancora una parte di allTouches, e così, evento 1 viene attivato di nuovo.

Quindi, ecco la domanda: Come faccio ad avere il tocco nuovo

È stato utile?

Soluzione

Lo stesso oggetto tocco verrà restituito nelle successive chiamate di touchesBegan per qualsiasi contatto continuo. Quindi, solo salvare ogni UITouch * tocco che è già stato trattato come iniziata (e non ancora terminato), e come si iterare la prossima volta a touchesBegan, saltare quelli che hai così salvato / contrassegnato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top