0

所以我将 UIButton 子类化了,我添加到它的唯一方法是 setTitle(我使用的是图标字体,所以我为那些通过图标表示的按钮创建了一个 Icon_UIButton)。

我有这个代码:

Icon_UIButton* button = [[Icon_UIButton alloc] init]; 
[button setTitle:@"R"]; //R is a specific icon in my icon font
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];

这看起来很有效,但是在我将按钮设置为选中后,使用:

[button setSelected:YES];

每当我点击并按住该按钮时,它就会再次变黑。

这就像一个选定的 Icon_UIButton 在同时被选中时忽略了它的 titleColor 以突出显示状态。

有人经历过吗?

4

1 回答 1

0

好的,我在这个帖子中找到了我的问题的正确答案:

从选中状态变为正常状态时,UIButton 的突出显示状态不会出现

我讨厌回答我自己的问题,但以防万一其他人在谷歌中输入可能与这个问题匹配的搜索词,这里是答案(缩短,但直接来自另一个线程):

还有另一个 UIControlState (或者更确切地说,控制状态的混合):

UIControlStateSelected | UIControlStateHighlighted

所以现在代码看起来像这样:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected | UIControlStateHighlighted];
于 2013-07-16T14:52:01.763 回答