Question

Permettez-moi d'abord d'écrire le code puis d'expliquer le problème

-(void)touchesBegan:(NSSet*)touches withEvent(UIEvent*)event{

    1: NSUInteger numTaps=[[touches anyObject] tapCount];
    2: NSString *labelText=[NSString stringWithFormat:@"Number of counts %d",
                                                                    numTaps];
    3: self.tapLabel.Text=labelText;
    4: if (numTaps==1)
    5: NSLog(@"Number of taps is 1");
}

Maintenant, comme vous pouvez le voir, j'attribue une valeur TapCount à numtaps à la ligne 1. et dans la ligne 3 en fonction du nombre de robes, mon étiquette affiche le nombre de comptes 1,2,3,4 .... n. Mais à la ligne 4, je vérifie si numtaps équivaut à 1. Voici les trucs étranges. Peu importe le nombre de robinets, une touche a la commande à la ligne 5 est toujours exécutée. Il semble donc que NumTaps soit toujours 1. mais comment se fait-il que la ligne 2 namtaps ne soit pas toujours un. Je suis sûr que je manque quelque chose là-bas, mais je ne peux pas comprendre quoi.

Était-ce utile?

La solution


D'après ce que je peux voir, cela peut être, que vous en avez oublié; Après beaucoup d'espaces à la ligne 4, c'est donc la place dans la zone invisible de l'écran (au moins si vous n'y faites pas défiler). Essayez de mettre la ligne 5 à l'intérieur du bloc {} comme ainsi

4: if (numTaps==1){
5:     NSLog(@"Number of taps is 1");
6: }

Il est toujours une bonne pratique de mettre le bloc IF à l'intérieur des accolades, même si vous n'avez qu'une seule ligne de code à l'intérieur. Peut éviter de nombreux bugs.
Une autre possibilité est que vous avez mis unique = dans la clause if. (Cela me arrive beaucoup).

4: if (numTaps=1)

Qui attribuent en fait 1 à la variable NUMTAPS, donc lorsque le code va, il est 1 à l'intérieur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top