选择时无法设置 UIButton 的背景颜色?

Posted

技术标签:

【中文标题】选择时无法设置 UIButton 的背景颜色?【英文标题】:Can't set background color of a UIButton when selected? 【发布时间】:2014-09-19 04:04:43 【问题描述】:

在 UIButton 子类中:

- (void) setHighlighted:(BOOL)highlighted 
    [super setHighlighted:highlighted];

    if (highlighted) 
        self.backgroundColor = [UIColor redColor];
    
    else 
        self.backgroundColor = [UIColor blueColor];
    


- (void)setSelected:(BOOL)selected 
    [super setSelected:selected];
    if (selected) 
        self.backgroundColor = [UIColor greenColor]; //this happens
    
    else 
        self.backgroundColor = [UIColor blueColor];
    

当按钮突出显示时,我看到红色。但是当我设置 button.selected = YES 时,我从来没有看到绿色。为什么 setHighlighted 有效而 setSelected 无效?

我可以在“发生这种情况”行设置一个断点,它就会发生。但按钮的背景颜色不会变为绿色。

【问题讨论】:

您在界面生成器中设置了哪些属性? 那里有几个答案。 ***.com/questions/4049103/… 看起来一个常见的解决方案是设置一个基本上是 1x1 像素颜色的背景图像。此解决方案有效,因为您为每个特定状态设置了背景图像。我不太确定为什么您的代码不起作用。按钮被选中后是否立即取消选中? 【参考方案1】:

您是否在按钮的 UIControlEventTouchUpInside 操作中设置了 selected 属性?如果是这样,您的 setHighlighted: 方法将在 setSelected: 之后再次被调用,因此 backgroundColor 被设置回蓝色。

【讨论】:

是的,这可能就是正在发生的事情。您知道任何解决方法吗? 我可能只是添加一个检查两种状态的updateBackgroundColor(或其他)方法,然后从覆盖的设置器中调用该方法。

以上是关于选择时无法设置 UIButton 的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

为uibutton背景图像iphone sdk设置渐变颜色(颜色)

目标 - 突出显示/选择C按钮时,突出显示/选择背景颜色和字体颜色

Iphone UIButton 背景颜色

UIButton:为选中的高亮 UI 状态设置背景颜色(不是图像)

突出显示时更改 UIButton 的背景颜色

UIButton 背景颜色与突出显示的文本重叠