让我先编写代码,然后解释问题
-(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值分配给第1行中的numTaps。在第3行中,根据抽头计数,我的标签显示计数1,2,3,4 .... n。但是在第4行我检查numTaps是否等于1.这里有奇怪的东西。无论触摸多少次,总是执行第5行中的命令。因此看起来numTaps总是为1.但是第2行中的namTaps并不总是一个。我确定我在那里遗漏了一些但却无法弄清楚是什么。
答案 0 :(得分:0)
从我所看到的可能是你忘记了一些;在第4行的很多空格之后,它位于屏幕的不可见区域(至少如果你不滚动到那里)。尝试将第5行放在{}块中,如此
4: if (numTaps==1){
5: NSLog(@"Number of taps is 1");
6: }
将if块放在大括号内总是好的做法,即使你只有一行代码。可以避免很多错误。
其他可能性是你在if子句中放了single =(对我来说很多)。
4: if (numTaps=1)
实际上将1分配给numTaps变量,所以当代码变为1时,内部为1。