2009-08-08 6 views
0

Je souhaite obtenir le nombre de pressions n'importe où sur l'écran.Nombre de touches

Voici mon code:

-(void) touchesEnded: (NSSet *)touches withEvent: (UIEvent *)event 
{ 
    DebugLog(@"touches: %d", [touches count]); 
} 

Cette méthode est mise en oeuvre dans un contrôleur de vue actif.

Mais il ne détecte pas plusieurs taps - il les signale en un seul clic.

Comment puis-je obtenir la quantité de tarauds?

Merci.

Répondre

3

Le problème réside dans la manière dont les touches sont rapportées dans cette méthode. Le NSSet touches dans cette méthode contient une ou plusieurs instances de UITouch, et chaque instance UITouch représente des événements tactiles à partir d'un seul doigt sur l'écran. Ainsi, si l'utilisateur touche l'écran avec deux doigts, l'ensemble touches contiendra deux objets UITouch.

Le problème est qu'un seul UITouch peut avoir plusieurs prises sans être considéré comme plusieurs UITouches. Si le périphérique détecte deux taps (le doigt vers le haut et vers le haut sans mouvement significatif) à peu près au même endroit, il les combinera en un seul UITouch contenant plusieurs taps. Dans ce cas, vous utilisez le sélecteur tapCount sur UITouch pour savoir combien de prises ont été touchées.

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"Got %u touches", [touches count]); 
    for(UITouch *touch in touches) { 
     NSLog(@"Touch had %u taps", [touch tapCount]); 
    } 
}

Pour plus d'informations:

1

On dirait que vous pouvez simplement devoir activer "Multiple Touch" via View Interface Builder Attributs inspecteur sur la Élément d'interface utilisateur ou vue avec laquelle vous travaillez. J'oublie toujours ceci et rencontre le même problème que toi, jusqu'à ce que je me rappelle deux heures plus tard que je dois cocher cette case.