Количество нажатий UITouch равно 1 независимо от того, сколько раз я нажимаю

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

-(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. Я уверен, что мне чего-то не хватает, но я не могу понять, что.


person Mikayil Abdullayev    schedule 10.09.2011    source источник


Ответы (1)



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

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

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

4: if (numTaps=1)

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

person Ariel    schedule 10.09.2011
comment
Я попытался поместить строку в фигурные скобки и убедился, что если (numTaps==1). Но это не работает. - person Mikayil Abdullayev; 10.09.2011