UIButton - 触摸时保持文本黑色

Posted

技术标签:

【中文标题】UIButton - 触摸时保持文本黑色【英文标题】:UIButton - Keep text black when touched 【发布时间】:2011-09-10 00:08:58 【问题描述】:

我有一个带有背景图像和文本的 iPhone UIButton(自定义)。

触摸时,图像变暗(良好),但文本从设置的黑色变为白色。

如何使文本保持相同的黑色,以便在触摸按钮时,只有图像会改变颜色。

【问题讨论】:

【参考方案1】:

大多数时候,下面的行就可以了:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

如果什么都没有发生,那么使用这个:

[button setTitleColor:[UIColor blackColor] forState:(UIControlStateSelected | UIControlStateHighlighted | UIControlStateNormal)];

或者这样可以解决问题:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];

请参阅下面的 cmets 了解此答案已被编辑/扩展为包括 2 条单独的行的原因。

【讨论】:

为什么会被接受?它行不通。按下按钮只会打开突出显示的状态。除非您明确指示按钮,否则按钮不会进入选定状态。 这样,如果他明确指示按钮进入选中状态,颜色将保持黑色。或者,他可以继承 UIButton 并以 obj-c 最初应该具有的方式实现选定状态。 =p 但这并没有解决最初的问题,即如何在他触摸按钮时保持文本不变色。如果按钮同时被选中突出显示,您的答案只会设置文本颜色。 Objective-C Operators and Expressions - Bitwise Operators。来自 UIControl.h UIControlStateHighlighted = 1 << 0UIControlStateSelected = 1 << 2 的定义。如果只有 1 并且同时设置了两个状态,则按位 OR 应该使它成为黑色的标题颜色。 不,只有当 both 状态都被设置时它才会变黑。仅仅因为您使用按位 OR 来组合它们并不能赋予“状态 a OR 状态 b”的含义。本质上,这种情况下的按位 OR 对应于逻辑 AND。【参考方案2】:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]

【讨论】:

【参考方案3】:
okButton.titleLabel.textColor = [UIColor redColor];
[okButton addTarget:self action:@selector(isPressingForgetButton:) forControlEvents:UIControlEventTouchDown];
[okButton addTarget:self action:@selector(didPressForgetButton:) forControlEvents:UIControlEventTouchUpInside];


- (void) isPressingForgetButton:(id)sender

    UIButton * bt = (UIButton *)sender;
    bt.titleLabel.textColor = [UIColor greenColor];

- (void) didPressForgetButton:(id)sender

    UIButton * bt = (UIButton *)sender;
    bt.titleLabel.textColor = [UIColor redColor];
    [self gotoUnblockView];

【讨论】:

以上是关于UIButton - 触摸时保持文本黑色的主要内容,如果未能解决你的问题,请参考以下文章

为 UIButton 设置 titleLabel

UIButton图像动画

UIButton 没有注册触摸

表格页脚视图中的UIButton在键盘显示时没有响应触摸

通过触摸按钮 Swift 3 更改 UIButton 文本标签颜色

显示键盘时,表格页脚视图中的 UIButton 不响应触摸