![](/img/trans.png)
[英]UIButton highlight state only works from .normal -> .selected?
[英]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.