2013-10-25 78 views
0

我正在製作一個小型的iOS遊戲,在同一視圖上有許多按鈕的實例。視圖中充滿了使用泡泡圖像的按鈕。用同一個按鈕的多個實例更改特定按鈕的圖像

我需要能夠改變其中一個按鈕的圖像時,它被竊聽和5秒後改回來,但是我完全不知道該怎麼辦呢D:

可能有人提出一種可能請解決嗎?

+0

是否所有的按鈕使用相同的動作?也就是說,當你敲擊它們時,是否每個按鈕都調用相同的方法? – neilco

+0

是的他們都使用相同的方法。 –

回答

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]; 
    }); 
} 
+0

+1你的答案好多了,所以我刪除了我的。雖然我覺得第一個setImage:forState應該有UIControlStateHighlighted不應該嗎? – bizsytes

+0

@bizsytes這取決於是針對「UIControlEventTouchDown」還是「UIControlEventTouchUpInside」調用操作。如果它是'UIControlEventTouchDown',那麼是的,使用'UIControlStateHighlighted'更有意義。 – neilco

+0

我還是個新手,「_block」是什麼意思? –

相關問題