簡體   English   中英

UIButton和選中的高亮狀態

[英]UIButton and selected highlight state

UIButton具有普通/默認,突出顯示和選定的圖像。 然后我有一個在Touch Down上調用的IBAction方法。 該方法根據選擇的內容更改突出顯示的圖像。 但是當選擇按鈕時,會調用該方法,因此高亮顯示圖像會發生變化,但顯示的是帶有色調的普通/默認圖像。 我測試過使用的圖像不是nil 當按下處於選定狀態的UIButton時,會顯示帶有色調的正常狀態。 為什么不使用高光圖像,是否有另一種顯示所選高光圖像的方法?

為什么要在IBAction方法中設置突出顯示的狀態? 您只需在創建時為您設置突出顯示的圖像按鈕。 它會自動切換。 選中時添加色調是未指定高亮顯示圖像時“選擇”的默認行為。

如果您使用Interface Builder,只需在其中指定突出顯示的圖像。

我假設你正在尋找正常的按鈕選擇行為,你的IBAction方法設置為touchUpInside事件。

我通過使用選定的狀態和通知(而不是通過UI)解決了這個問題。 調用通知時,我將圖像更改為默認狀態,更改所選狀態,然后將圖像更改為選定狀態。

更新 :我從另一個與我類似的問題提出了一個更好的想法。 這樣做的方法是使用setSelected東西

- (void)setSelected:(BOOL)selected
{
    if ( selected )
    {
        [self setImage:[CFCHStyleSheet imageForTickButtonChecked] forState:UIControlStateNormal];
        [self setImage:[CFCHStyleSheet imageForTickButtonChecked] forState:UIControlStateSelected];
        [self setImage:[CFCHStyleSheet imageForTickButtonCheckedDisabled] forState:UIControlStateDisabled];
    }
    else
    {
        [self setImage:[CFCHStyleSheet imageForTickButtonUnchecked] forState:UIControlStateNormal];
        [self setImage:[CFCHStyleSheet imageForTickButtonUnchecked] forState:UIControlStateSelected];
        [self setImage:[CFCHStyleSheet imageForTickButtonUncheckedDisabled] forState:UIControlStateDisabled];
    }

    [super setSelected:selected];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM