2011-11-04 50 views
0

我有一個包含8個UIButton的IBOutletCollection安裝程序。所有按鈕都有「顯示突出顯示」屬性設置,因此觸摸時它們會發出白光。爲UIButton發生奇怪的高光動畫

當我觸摸按鈕時,我將它設置爲隱藏。然後當三個按鈕被隱藏時,我調用一個枚舉IBOutletCollection並取消隱藏任何隱藏按鈕的方法。

奇怪的是,當我隱藏的第三個按鈕被隱藏時(無論是哪個8)重新顯示一個輕微的動畫。它突然發出白色光,好像它突出顯示一樣?

爲什麼只有其中一個在未被隱藏時發出白光?這裏是我用來取消隱藏的代碼

for (UIButton *stockButton in stockButtonCollection) {    
    [stockButton setBackgroundImage:[UIImage imageNamed:@"original.png"] forState:UIControlStateNormal]; 

     if (stockButton.hidden) stockButton.hidden = FALSE; 
} 

回答

1

嘗試添加一個輕微的延遲,然後取消隱藏按鈕,如0.5秒。這將允許動畫完成高光顯示觸摸。你可以玩這個數字,可能會下降到0.3左右。

像這樣的事情

[self performSelector:@selector(unhideButtons) withObject:nil afterDelay:0.5f]; 
2

檢查該按鈕是否一次檢測不到觸摸兩次。如果是這種情況,隱藏它時禁用該按鈕將解決您的問題。

+0

一個人怎麼會做這樣的檢查? – DarkDust

+0

每次檢測到觸摸時,都會添加nslog或printf。幾個月前我遇到過這樣的問題,並以此方式解決問題。 – NightCoder

+0

所以你說的解決方案是實際上禁用按鈕,檢查是不必要的。 – DarkDust