Количество нажатий UITouch равно 1 независимо от того, сколько раз я нажимаю - PullRequest
0 голосов
/ 10 сентября 2011

Позвольте мне сначала написать код, а затем объяснить проблему

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

Теперь, как вы можете видеть, я присваиваю значение tapCount для numTaps в строке 1. А в строке 3, в зависимости от количества нажатий, моя метка показывает количество счетчиков 1,2,3,4 .... n. Но затем в строке 4 я проверяю, равно ли numTaps 1. А вот и странные вещи. Независимо от того, сколько нажатий касание имеет, команда в строке 5 всегда выполняется. Таким образом, кажется, что numTaps всегда 1. Но почему в строке 2 namTaps не всегда один. Я уверен, что что-то упустил, но не могу понять, что.

1 Ответ

0 голосов
/ 10 сентября 2011


Из того, что я вижу, может быть, вы что-то забыли;после большого количества пробелов в строке 4, так что это место в невидимой области экрана (по крайней мере, если вы не прокрутите туда).Попытайтесь поместить строку 5 внутри блока {} следующим образом:

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

Всегда полезно помещать блок if в фигурные скобки, даже если внутри вас только одна строка кода.Может избежать многих ошибок.
Другая возможность состоит в том, что вы поставили single = в предложении if. (Многое случается со мной).

4: if (numTaps=1)

Это фактически присваивает 1 переменной numTaps, поэтому, когда код переходит в единицу, он равен 1.

...