如何禁用UIButton的高亮控制状态?

时间:2010-02-14 02:16:53

标签: ios cocoa-touch uibutton uikit uicontrol

我有一个UIButton,当被选中时,触摸时不应改变状态。 默认行为是触摸时它处于UIControlStateHighlighted,这让我很生气。

建议?

13 个答案:

答案 0 :(得分:282)

您的按钮必须将buttonType设置为自定义。

在IB中,您可以取消选中“突出显示调整图像”。

以编程方式,您可以使用theButton.adjustsImageWhenHighlighted = NO;

同样适用于“禁用”状态的选项。

答案 1 :(得分:37)

除了在IB中取消选中“高亮调整图像”的上述答案之外,请确保按钮类型设置为CUSTOM。

答案 2 :(得分:34)

这对你有用:

[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];

第3行就是这里的诀窍......

这对于设置image / backgroundImage

的作用相同

答案 3 :(得分:26)

adjustsImageWhenHighlighted = NO;

答案 4 :(得分:21)

button.adjustsImageWhenDisabled = NO;

对于拥有自己的禁用按钮非常有用。

答案 5 :(得分:4)

根据从默认值到按钮突出显示状态的更改,您可以调用几种方法将它们设置为您需要的值。因此,如果图像发生变化,您可以

[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

答案 6 :(得分:3)

好的,这是一个简单的解决方案,如果这适合你,经过一个星期的敲打我的头,最后发生在我身上突然设置突出显示= NO,用于TouchUpInside或TouchDown的IBAction方法的第一行,或者其他作品。对我来说,TouchUpInside很好。

-(IBAction)selfDismiss:(id)sender {

    self.btnImage.highlighted = NO;

    NSLog(@"selfDismiss");

    etc, etc, etc.

}

答案 7 :(得分:3)

对于Swifty Developer -

yourButton.adjustsImageWhenHighlighted = false

答案 8 :(得分:3)

Swift 3 +

button.adjustsImageWhenHighlighted = false

button.adjustsImageWhenDisabled = false

答案 9 :(得分:2)

只有两件事:

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

答案 10 :(得分:2)

我有一个类似的问题,发现"取消检查"清除界面生成器中的图形内容修复了我的问题

enter image description here

答案 11 :(得分:2)

使您的按钮类型 - “自定义” 和取消选中 - 突出显示调整图像和 你完成了。

答案 12 :(得分:-2)

避免将UIButton的换行符设置为剪辑,而是使用标准截断中间

enter image description here