0

同じビューにボタンのインスタンスが多数ある小さな iOS ゲームを作成しています。ビューは、バブルのイメージを使用してボタンで埋められます。

これらのボタンのいずれかがタップされたときに画像を変更し、5 秒後に元に戻すことができるようにする必要がありますが、その方法がまったくわかりません D:

誰かが可能な解決策を提案できますか?

4

1 に答える 1

1

ボタンがタップされると、アクション セレクターが実行されます。アクション セレクターに渡されるsenderパラメーターは、実際にはタップされたボタンであり、これを利用してそのプロパティを変更できます。変更を元に戻すには、 を使用dispatch_afterして二次変更を遅らせることができます。

- (void)buttonWasTapped:(id)sender
{
    __block UIButton *button = (UIButton *)sender; // This is the button that was tapped
    [button setImage:[UIImage imageNamed:@"blah"] forState:UIControlStateNormal];

    double delayInSeconds = 5.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        [button setImage:[UIImage imageNamed:@"original_image"] forState:UIControlStateNormal];
    });
}
于 2013-10-25T17:56:40.707 に答える