如何禁用 UIButton 的高亮控制状态?
Posted
技术标签:
【中文标题】如何禁用 UIButton 的高亮控制状态?【英文标题】:How to disable the highlight control state of a UIButton? 【发布时间】:2011-01-16 14:58:43 【问题描述】:我有一个 UIButton,当它被选中时,它不应该在被触摸时改变状态。 默认行为是它在被触摸时处于 UIControlStateHighlighted 状态,这让我很生气。
建议?
【问题讨论】:
你应该打坐:-P 【参考方案1】:您的按钮必须将其buttonType
设置为自定义。
在 IB 中,您可以取消选中“突出显示调整图像”。
您可以通过编程方式使用theButton.adjustsImageWhenHighlighted = NO;
类似的选项也可用于“禁用”状态。
【讨论】:
您有没有机会知道它的程序化版本是什么?现在,我通过将其禁用并将其装扮成被选中的方式来使其正常工作。 uibutton.adjustsImageWhenHighlighted = NO; 还要确保按钮类型设置为自定义。 (正如 Mosib Asad 在另一个答案中提到的) 太棒了!!!只是我错过了一个很小而明显的变化!!!我已将 UIButton 类类型设置为 MyCustomClass 但忘记更改此类型。所以它给出了未选择的按钮突出显示效果。再次感谢您。【参考方案2】:除了在 IB 中取消选中“突出显示调整图像”的上述答案外,请确保按钮类型设置为 CUSTOM。
【讨论】:
这是缺少的部分:按钮类型 CUSTOM。谢谢! 如果我想保留为系统 UIButton 怎么办?我不能删除高光调整图像吗?【参考方案3】:这对你有用:
[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
的 adjustsImageWhenHighlighted
属性似乎只影响背景图像。
请注意,如果决定将图像分配给“禁用状态”,则不要调用 setBackgroundImage。相反,您应该执行以下操作 [button setImage:image forState:UIControlStateDisabled];另请注意,正如该线程中所述,adjustsImageWhenHighlighted UIButton 属性仅影响背景图像。
如果您的目的是移除控件的高亮状态,而不仅仅是移除点击时的高亮效果,应该参考这个精彩的答案【参考方案4】:
adjustsImageWhenHighlighted = NO;
【讨论】:
【参考方案5】:button.adjustsImageWhenDisabled = NO;
对于拥有自己的禁用按钮外观同样有用。
【讨论】:
【参考方案6】:根据按钮从默认状态到突出显示状态的变化,您可以调用几个方法将它们设置为您需要的状态。因此,如果图像发生变化,您可以这样做
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
如果文字发生变化,你可以这样做
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
其他类似功能:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
【讨论】:
setTitleColor 是我在 uibutton 的文本上禁用突出显示所需要的全部【参考方案7】:对于 Swifty 开发者 -
yourButton.adjustsImageWhenHighlighted = false
【讨论】:
【参考方案8】:Swift 3+
button.adjustsImageWhenHighlighted = false
button.adjustsImageWhenDisabled = false
【讨论】:
【参考方案9】:好的,如果这对您有用,这是一个简单的解决方案,经过一周的努力,我终于想到只需为 TouchUpInside 或 TouchDown 的 IBAction 方法的第一行设置 highlight=NO 或其他作品。对我来说,TouchUpInside 很好。
-(IBAction)selfDismiss:(id)sender
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
【讨论】:
【参考方案10】:使您的按钮类型 - “自定义” 和取消选中 - 突出显示调整图像和 你完成了。
【讨论】:
【参考方案11】:只有两件事:
UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;
【讨论】:
【参考方案12】:我遇到了类似的问题,发现在界面生成器中“取消选中”清除图形内容解决了我的问题
【讨论】:
【参考方案13】:避免将UIButton的Line Break设置为Clip,改用标准的Truncate Middle
【讨论】:
以上是关于如何禁用 UIButton 的高亮控制状态?的主要内容,如果未能解决你的问题,请参考以下文章
如何禁用 UIButton 和禁用 touchEvent 响应程序?
创建类似于 UIButton 的 adjustsImageWhenHighlighted 效果的调整后图像