1

こんにちは、クリックすると画像が変わるボタンを含むシンプルなアプリを作ろうとしています。2~3秒遅れて元の状態に戻ってほしいです。私は客観的なcを初めて使用し、その方法を理解できません。以下のコードのバリエーションを試しました。ボタンがいくつかあるので、送信者 ID または画像名を保持する必要があります。前もって感謝します!

- (IBAction)playSound:(id)sender {   
    UIImage *newImage = [UIImage imageNamed:@"new.jpg"];
    [sender setImage:newImage forState:UIControlStateNormal];

    [NSThread sleepForTimeInterval:3];

    UIImage *origImage = [UIImage imageNamed:@"orig.jpg"];
    [sender setImage:origImage forState:UIControlStateNormal];
}
4

2 に答える 2

1

ボタンの画像を変更する必要はありません。これに従ってください:

あなたUIButtonは、2つの状態の画像、UIControlStateNormalおよびそれ自体のUIControlStateSelectedloadViewまたは内viewDidLoadにある必要がありxibます。

[button setImage:[UIImage imageNamed:@"original.jpg"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"new.jpg"] forState:UIControlStateSelected];

ユーザーがボタンをクリックすると、ボタンは[UIImage imageNamed:@"new.jpg"]それ自体に変わります。次にplaySound、メソッド内でNSTimer

-(IBAction)playSound:(id)sender
{
    [self aTimer];
}

- (void)aTimer
{
    [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(changeImage) userInfo:self.view repeats:NO];
}

- (void)changeImage
{
    [button setSelected:NO];
}
于 2013-09-26T14:00:27.557 に答える
1

Button の 2 つのターゲットをStateHighlightedStateNormalのように追加します。

[myButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png", i]] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d-active.png", i]] forState:UIControlStateHighlighted]
[myButton addTarget:self action:@selector(buttonMenuPressed:) forControlEvents:UIControlEventTouchUpInside];
[myButton addTarget:self action:@selector(gotoList:) forControlEvents:UIControlStateHighlighted];
于 2013-09-26T13:51:41.820 に答える