A contagem de toques UITouch é igual a 1, não importa quantas vezes eu toque
-
28-10-2019 - |
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ê.
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.