我正在尝试将 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 是否检查状态等效性?