我正在尝试将 a 设置UIButton
为titleColor
某种颜色,当它被选中并突出显示时,但是,我需要设置当用户按下UIButton
.
我已经这样设置了:
[button setTitleColor:normalColor forState:UIControlStateNormal];
[button setTitleColor:superDuperSpecialColor forState:UIControlStateHighlighted];
[button setTitleColor:superDuperSpecialColor forState:UIControlStateSelected];
[button addTarget:self
action:@selector(action:)
forControlEvents:UIControlEventTouchDown];
但是,当在action:
using 方法中选择按钮时[senderButton setSelected:YES]
,它会将 设置titleColor
为normalColor
,而不是superDuperSpecialColor
,它应该是,因为它既突出显示又被选中。
注释掉setSelected:
调用可以防止按钮变为并保持选中状态,注释掉突出显示的状态颜色似乎没有任何效果。
我是否必须添加目标UIControlEventTouchCancel
,UIControlEventTouchUpInside
并且UIControlEventTouchUpOutside
为了setSelected:
在突出显示结束后调用 - 或 - 将 for 更改titleColor
为UIControlStateNormal
按钮superDuperSpecialColor
被触摸时?
在旁注中,我希望这样设置titleColor
:
[button setTitleColor:superDuperSpecialColor
forState:(UIControlStateHighlighted | UIControlStateSelected)];
但这似乎不起作用。这是为什么?Objective-C 是否检查状态等效性?