0

先写代码再解释问题

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

现在,如您所见,我在第 1 行将 tapCount 值分配给 numTaps。在第 3 行,根据点击计数,我的标签显示计数 1、2、3、4....n。但是在第 4 行,我检查 numTaps 是否等于 1。奇怪的东西来了。无论一次触摸多少次,第 5 行的命令总是被执行。所以看起来 numTaps 总是 1。但是第 2 行的 namTaps 并不总是 1。我确定我在那里遗漏了一些东西,但不知道是什么。

4

1 回答 1

0


据我所知,您可能忘记了一些;在第 4 行有很多空格之后,所以它位于屏幕的不可见区域(至少如果你不滚动到那里)。尝试像这样将第 5 行放在 {} 块内

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

将 if 块放在大括号内始终是一种好习惯,即使里面只有一行代码。可以避免很多bug。
另一种可能性是您在 if 子句中添加了单个 =。(对我来说经常发生)。

4: if (numTaps=1)

这实际上将 1 分配给 numTaps 变量,因此当代码变为 1 时,内部为 1。

于 2011-09-10T06:07:05.217 回答