如何在点击时禁用UIButton高亮显示?

时间:2013-07-08 13:50:33

标签: ios objective-c uibutton

如何在点击时禁用按钮突出显示效果?具有白色bg颜色和DarkGray文本颜色的自定义按钮。问题是按钮单击时文本变为白色。已经尝试但没有一个有效:

一个。取消选中界面构建器中的“突出显示的Ajusts图像”。

湾在按下按钮的方法中尝试设置突出显示= NO:

((UIButton *)sender).highlighted = NO

℃。尝试为高级状态设置相同的标题:

[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];

有什么建议吗?

8 个答案:

答案 0 :(得分:41)

你也可以制作UIButton类型:来自StoryBoard的自定义

Custom button

这应该为您删除任何系统行为。 (我认为)

答案 1 :(得分:17)

这是具有图像的按钮的解决方案。在故事板中,有一个名为HighlightedAdjustsImage的属性,默认情况下为On。禁用它,您的按钮图像将不会显示任何突出显示的属性。

答案 2 :(得分:13)

点击时会突出显示UIButton,因此请检查按钮设置 将高亮状态配置中的标题颜色更改为与默认状态相同 或者你可以设置:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];

如果你想通过代码控制突出显示,你可以禁用子类Button突出显示的普通,并在touchesBegin中禁用:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    if (self.state == UIControlStateHighlighted) {
        [self setHighlighted:NO];
    }
}

答案 3 :(得分:10)

  

使用XCode 9的Swift 4

取消选中“突出显示的调整图片”,如果您要删除已停用的背景,请取消选中“已停用调整图片”

  

首先确保您的按钮类型为“自定义”

enter image description here

答案 4 :(得分:7)

旧的过时的答案和旧的问题,但最新和最简单的方法是:

    overlayButton.adjustsImageWhenHighlighted = false

答案 5 :(得分:5)

我在网上找到的解决方案都没有为我工作(包括这里列出的那些),所以我最终在自定义UIButton子类中执行此操作:

// swift:

override var isHighlighted: Bool {
    didSet { if isHighlighted { isHighlighted = false } }
}

我也将buttonType设置为.custom,但这可能没什么区别。

现在:不再有奇怪的突出显示或彩色动画!

答案 6 :(得分:1)

我的2美分;)Swift 3准备好了

class CustomButton: UIButton {

    override var isHighlighted: Bool {
        didSet {
            if (isHighlighted) {
                super.isHighlighted = false
            }
        }
    }

}

情况和历史

我为UIControlState.normalUIControlState.selected设置了图片,因此设置UIButton.isSelected = true会显示所选图片,否则会显示正常图片。

我们发现的问题是在UIButton.isSelected = true时,以及在突出显示/聚焦期间(通过点按按钮并通过轻扫放弃点按)按钮显示UIControlState.normal的图像,对我的老板看起来很难看:D

我尝试了多种解决方案,例如UIButton(type: UIButtonType.custom)UIButton.adjustsImageWhenHighlighted = false,没人帮忙:(

答案 7 :(得分:1)

  

您可以通过在Swift 4.2中创建扩展程序来实现

extension UIButton {
open override var isHighlighted: Bool {
    didSet {
        super.isHighlighted = false
    }
}}