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

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

build议?

您的button必须将其buttonType设置为自定义。

在IB中,您可以取消选中“高光调整图像”。

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

类似的选项也可用于“禁用”状态。

这将为你工作:

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

第三条线是这里的诀窍…

这对于设置image / backgroundImage是一样的

除了在IB上取消选中“高亮调整图像”的上述答案,请确保buttontypes设置为“自定义”。

 adjustsImageWhenHighlighted = NO; 
 button.adjustsImageWhenDisabled = NO; 

对于拥有自己的禁用button外观同样有用。

根据button的默认值到高亮状态的变化,可以调用几个方法将它们设置为所需的值。 所以如果图像改变,你可以做

 [myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted]; 

如果文字改变,你可以做

 [myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted]; 

其他类似的function:

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state

OK这里有一个简单的解决scheme,如果这对你有用,经过一个星期的敲我的头在这最后我发现,只是设置突出显示=否为TouchUpInside或TouchDown,或任何工作的IBAction方法的第一行。 对于我来说,在TouchUpInside上很好。

 -(IBAction)selfDismiss:(id)sender { self.btnImage.highlighted = NO; NSLog(@"selfDismiss"); etc, etc, etc. } 

只是两件事情:

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

我有一个类似的问题,并发现“取消选中”在界面生成器中清除graphics内容解决了我的问题

在这里输入图像说明

Swifty开发者 –

 yourButton.adjustsImageWhenHighlighted = false 

使您的buttontypes – “自定义”和取消选中 – 突出显示调整图像,你就完成了。

避免将UIButton的Line Break设置为Clip ,而是使用标准的Truncate Middle

在这里输入图像说明