sleep() に問題があります。「buttons:」と呼ばれる同じ IBAction に接続された 10 個の UIButtons があります。ここで、IBAction メソッドはすべてのボタンを無効にし、それらの背景色を赤に変えてから、「nextButtonToEnable」というメソッドを呼び出します。このメソッドは、最初に sleep(1) を持ち、次に 1 になるスイッチによって使用されるランダムな int を持ちます。ボタンが有効になり、赤ではなく青になります。問題は、すべてのボタンを押すと赤くなり、1秒遅れて別のボタンが青くなるようにしたいのですが、そうはなりません。実際に起こることは、青いボタンを押すと、 1 秒の完全な遅延が発生すると、赤に変わり、別のボタンが青に変わります。
ここに私のコードがあります
.h:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
IBOutlet UIButton *b1;
IBOutlet UIButton *b2;
IBOutlet UIButton *b3;
IBOutlet UIButton *b4;
IBOutlet UIButton *b5;
IBOutlet UIButton *b6;
IBOutlet UIButton *b7;
IBOutlet UIButton *b8;
IBOutlet UIButton *b9;
IBOutlet UIButton *b10;
}
-(void)nextButtonToEnable;
@end
.m:
-(IBAction)buttons:(id)sender {
b1.enabled = NO;
b2.enabled = NO;
b3.enabled = NO;
b4.enabled = NO;
b5.enabled = NO;
b6.enabled = NO;
b7.enabled = NO;
b8.enabled = NO;
b9.enabled = NO;
b10.enabled = NO;
b1.backgroundColor = [UIColor redColor];
b2.backgroundColor = [UIColor redColor];
b3.backgroundColor = [UIColor redColor];
b4.backgroundColor = [UIColor redColor];
b5.backgroundColor = [UIColor redColor];
b6.backgroundColor = [UIColor redColor];
b7.backgroundColor = [UIColor redColor];
b8.backgroundColor = [UIColor redColor];
b9.backgroundColor = [UIColor redColor];
b10.backgroundColor = [UIColor redColor];
[self nextButtonToEnable];
}
-(void)nextButtonToEnable {
sleep(1);
int nextButton = rand() % 10;
switch (nextButton) {
case 0:
b1.enabled = YES;
b1.backgroundColor = [UIColor blueColor];
break;
case 1:
b2.enabled = YES;
b2.backgroundColor = [UIColor blueColor];
break;
case 2:
b3.enabled = YES;
b3.backgroundColor = [UIColor blueColor];
break;
case 3:
b4.enabled = YES;
b4.backgroundColor = [UIColor blueColor];
break;
case 4:
b5.enabled = YES;
b5.backgroundColor = [UIColor blueColor];
break;
case 5:
b6.enabled = YES;
b6.backgroundColor = [UIColor blueColor];
break;
case 6:
b7.enabled = YES;
b7.backgroundColor = [UIColor blueColor];
break;
case 7:
b8.enabled = YES;
b8.backgroundColor = [UIColor blueColor];
break;
case 8:
b9.enabled = YES;
b9.backgroundColor = [UIColor blueColor];
break;
case 9:
b10.enabled = YES;
b10.backgroundColor = [UIColor blueColor];
break;
default:
break;
}
}
そのため、スリープは b1.enabled = NO; の間にあるようです。b1.backgroundColor = [UIColor redColor];.
インターネット上で何も見つからないため、これを修正するにはどうすればよいですか。ほとんどの場合、何を検索すればよいか、まったく手がかりがないからです:P.