如何在点击时禁用按钮突出显示效果?具有白色bg颜色和DarkGray文本颜色的自定义按钮。问题是按钮单击时文本变为白色。已经尝试但没有一个有效:
一个。取消选中界面构建器中的“突出显示的Ajusts图像”。
湾在按下按钮的方法中尝试设置突出显示= NO:
((UIButton *)sender).highlighted = NO
℃。尝试为高级状态设置相同的标题:
[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
有什么建议吗?
答案 0 :(得分:41)
你也可以制作UIButton类型:来自StoryBoard的自定义
这应该为您删除任何系统行为。 (我认为)
答案 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)
答案 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.normal
和UIControlState.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
}
}}