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

Cen*_*ion 25 objective-c uibutton ios

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

一个.在界面构建器中取消选中"突出显示的Ajusts图像".

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

((UIButton *)sender).highlighted = NO
Run Code Online (Sandbox Code Playgroud)

C.尝试为highlihted状态设置相同的标题:

[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Pau*_*ski 45

你也可以从StoryBoard制作UIButton类型:custom

自定义按钮

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

  • 经过一番搜索,我找到了你的答案.添加了一个解决我问题的重要方面:Type = System行为将为突出显示的背景图像和文本添加淡入淡出效果.切换到Type = Custom将禁用此效果,以便显示指定的颜色.谢谢! (3认同)
  • 使用图像时不这样做 (2认同)

Raj*_*tia 20

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


LE *_*ANG 12

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

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

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

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


ibr*_*maz 11

带有XCode 9的Swift 4

只需取消选中"突出显示的调整图像",如果要删除禁用的背景,也可以取消选中"禁用调整图像".

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

在此输入图像描述


Jer*_*mie 9

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

    overlayButton.adjustsImageWhenHighlighted = false
Run Code Online (Sandbox Code Playgroud)


eph*_*mer 6

我在网上发现的所有解决方案都没有一个适合我(包括此处列出的解决方案),因此我最终在我的自定义UIButton子类中进行了此操作:

// swift:

override var isHighlighted: Bool {
    didSet { if isHighlighted { isHighlighted = false } }
}
Run Code Online (Sandbox Code Playgroud)

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

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