Броят на докосванията на 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 не винаги е едно. Сигурен съм, че пропускам нещо там, но не мога да разбера какво.


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