【发布时间】:2011-01-16 14:58:43
【问题描述】:
我有一个 UIButton,当它被选中时,它不应该在被触摸时改变状态。 默认行为是它在被触摸时处于 UIControlStateHighlighted 状态,这让我很生气。
建议?
【问题讨论】:
-
你应该打坐:-P
标签: ios cocoa-touch uibutton uikit uicontrol
我有一个 UIButton,当它被选中时,它不应该在被触摸时改变状态。 默认行为是它在被触摸时处于 UIControlStateHighlighted 状态,这让我很生气。
建议?
【问题讨论】:
标签: ios cocoa-touch uibutton uikit uicontrol
您的按钮必须将其buttonType 设置为自定义。
在 IB 中,您可以取消选中“突出显示调整图像”。
您可以通过编程方式使用theButton.adjustsImageWhenHighlighted = NO;
类似的选项也可用于“禁用”状态。
【讨论】:
除了在 IB 中取消选中“突出显示调整图像”的上述答案外,请确保按钮类型设置为 CUSTOM。
【讨论】:
这对你有用:
[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 属性似乎只影响背景图像。
adjustsImageWhenHighlighted = NO;
【讨论】:
button.adjustsImageWhenDisabled = NO;
对于拥有自己的禁用按钮外观同样有用。
【讨论】:
根据按钮从默认状态到突出显示状态的变化,您可以调用几个方法将它们设置为您需要的状态。因此,如果图像发生变化,您可以这样做
[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
【讨论】:
对于 Swifty 开发者 -
yourButton.adjustsImageWhenHighlighted = false
【讨论】:
Swift 3+
button.adjustsImageWhenHighlighted = false
button.adjustsImageWhenDisabled = false
【讨论】:
好的,如果这对您有用,这是一个简单的解决方案,经过一周的努力,我终于想到只需为 TouchUpInside 或 TouchDown 的 IBAction 方法的第一行设置 highlight=NO 或其他作品。对我来说,TouchUpInside 很好。
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
【讨论】:
使您的按钮类型 - “自定义” 和取消选中 - 突出显示调整图像和 你完成了。
【讨论】:
只有两件事:
UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom];
btnTransparentComponent.adjustsImageWhenHighlighted = NO;
【讨论】:
避免将UIButton的Line Break设置为Clip,改用标准的Truncate Middle
【讨论】: