Pergunta

Deixe-me primeiro escrever o código e depois explicar o problema

-(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");
}

Agora, como você pode ver, atribuo o valor tapCount a numTaps na linha 1. E na linha 3, dependendo da contagem de toques, meu rótulo mostra o número de contagens 1,2,3,4 .... n.Mas então na linha 4 eu verifico se numTaps é igual a 1. Aí vem a coisa estranha.Não importa quantos toques um toque tenha, o comando na linha 5 é sempre executado.Então, parece que numTaps é sempre 1. Mas como é que na linha 2 namTaps nem sempre é um.Tenho certeza de que estou perdendo algo lá, mas não consigo descobrir o quê.

Foi útil?

Solução


Pelo que posso ver, pode ser que você tenha esquecido alguns;depois de muitos espaços na linha 4, então é colocado em uma área invisível da tela (pelo menos se você não rolar até lá).Tente colocar a linha 5 dentro do {} bloco assim

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

É sempre uma boa prática colocar o bloco if entre colchetes, mesmo se você tiver apenas uma linha de código dentro.Pode evitar muitos bugs.
Outra possibilidade é que você tenha colocado single= na cláusula if. (Acontece muito comigo).

4: if (numTaps=1)

Isso realmente atribui 1 à variável numTaps, de modo que quando o código for um, será 1 dentro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top