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

kba*_*man 140 cocoa-touch uibutton uikit uicontrol ios

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

建议?

Hay*_*ydn 299

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

在IB中,您可以取消选中"突出显示调整图像".

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

类似的选项也适用于"禁用"状态.

  • uibutton.adjustsImageWhenHighlighted = NO; (98认同)
  • 还要确保按钮类型设置为CUSTOM.(正如Mosib Asad在另一个答案中提到的那样) (43认同)

Mos*_*sad 38

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

  • 这是缺失的部分:按钮类型CUSTOM.感谢名单! (2认同)

Man*_*uja 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];
Run Code Online (Sandbox Code Playgroud)

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

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


KET*_*TAN 26

adjustsImageWhenHighlighted = NO;
Run Code Online (Sandbox Code Playgroud)


小智 23

button.adjustsImageWhenDisabled = NO;
Run Code Online (Sandbox Code Playgroud)

对于拥有自己的禁用按钮外观同样有用.


Dim*_*ris 5

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

[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

如果文本更改,您可以执行

[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

其他类似功能:

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

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


iDe*_*per 5

对于 Swifty 开发人员 -

yourButton.adjustsImageWhenHighlighted = false
Run Code Online (Sandbox Code Playgroud)