Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIButton-触摸时保持文本黑色_Iphone_Ios_Uibutton - Fatal编程技术网

Iphone UIButton-触摸时保持文本黑色

Iphone UIButton-触摸时保持文本黑色,iphone,ios,uibutton,Iphone,Ios,Uibutton,我有一个iPhone UIButton(自定义),它有一个背景图像和文本 触摸时,图像变暗(良好),但文本从设置的黑色变为白色 如何将文本保持为相同的黑色,以便在触摸按钮时,只有图像改变颜色。[button setTitleColor:[UIColor blackColor]对于状态:uicontrol状态高亮显示]大多数情况下,以下行可以: [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 如

我有一个iPhone UIButton(自定义),它有一个背景图像和文本

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


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

[button setTitleColor:[UIColor blackColor]对于状态:uicontrol状态高亮显示]
大多数情况下,以下行可以:

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

请参阅下面的评论,了解此答案被编辑/扩展以包括两行的原因。

为什么接受此答案?这行不通。按下按钮只会打开高亮显示的状态。除非您明确指示按钮进入选定状态,否则按钮不会进入选定状态。这样,如果他明确指示按钮进入选定状态,则颜色将保持黑色。或者,他可以对UIButton进行子类化,并按照obj-c最初应有的方式实现所选状态=但这并不能解决最初的问题,即当他触摸按钮时,如何防止文本颜色变化。您的答案仅在选中并高亮显示按钮时设置文本颜色。。UIControl.h
UIControl状态高亮显示的定义=1否,仅当两种状态都设置时,它才使其变为黑色。仅仅因为使用按位OR组合它们并不能赋予“状态a或状态b”的含义。本质上,按位OR在本例中对应于逻辑AND。
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];
}