禁用 UIButton 的突出显示 UIControl 状态

Posted

技术标签:

【中文标题】禁用 UIButton 的突出显示 UIControl 状态【英文标题】:Disable highlighted UIControl state of a UIButton 【发布时间】:2011-05-03 10:59:31 【问题描述】:

我有一个UIButton,如果按钮处于选中状态,我想禁用它的UIControlStateHighlighted。我的意思是,如果UIButton 的当前状态是ControlStateSelected,那么在触地时,它的状态不应更改为突出显示,这是UIButton 的默认行为。

【问题讨论】:

How to disable the highlight control state of a UIButton?的可能重复 【参考方案1】:
[button setBackgroundImage:[UIImage imageNamed:@"button_image"]forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];

第三行是这里的技巧,如果按钮已经处于选中状态,它将禁用 UIButton 的突出显示状态

【讨论】:

如果您的目的是移除控件的高亮状态,而不仅仅是移除点击时的高亮效果,应该参考这个精彩的答案【参考方案2】:

在 IB 中取消选中“突出显示调整图像”,同时确保在 IB 中将按钮类型设置为 CUSTOM

【讨论】:

【参考方案3】:
if(button.selected == YES)
button.adjustsImageWhenHighlighted = NO;
else
button.adjustsImageWhenHighlighted = YES;

希望对你有帮助

【讨论】:

您好,感谢您的回复。但即使在设置 utton.adjustsImageWhenHighlighted = NO;高亮状态被唤起【参考方案4】:

只有两件事:

UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;

【讨论】:

以上是关于禁用 UIButton 的突出显示 UIControl 状态的主要内容,如果未能解决你的问题,请参考以下文章

在 Storyboard 和 Swift 2 中禁用 UIButton 突出显示

如何禁用 UIButton 突出显示操作

如何在nib文件中按下时禁用UIButton高亮显示?

在滑动手势识别器上禁用“在突出显示时显示触摸”

UIButton 状态

iPhone - UIButton - 禁用的背景图片