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 行目の numTaps に tapCount 値を割り当てます。3 行目では、タップ カウントに応じて、ラベルにカウント数 1,2,3,4....n が表示されます。しかし、4 行目で、numTaps が 1 に等しいかどうかをチェックします。タッチが何回タップされても、5 行目のコマンドは常に実行されます。したがって、numTaps は常に 1 のように見えます。そこに何かが欠けていると確信していますが、何がわかりません。

4

1 に答える 1

0


私が見る限り、あなたは何かを忘れているかもしれません。4行目の多くのスペースの後、画面の非表示領域に配置されます(少なくともそこまでスクロールしない場合)。次のように 5 行目を {} ブロック内に配置してみてください

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

コードが 1 行しかない場合でも、中括弧内に if ブロックを配置することをお勧めします。多くのバグを回避できます。
他の可能性は、if 句に single = を入れたことです (私にはよく起こります)。

4: if (numTaps=1)

これは実際には numTaps 変数に 1 を割り当てるため、コードが 1 になると内部で 1 になります。

于 2011-09-10T06:07:05.217 に答える