UIButton和选中的高亮状态

时间:2012-08-21 17:03:21

标签: ios ios5 uibutton

UIButton具有普通/默认,突出显示和选定的图像。然后,我在IBAction上调用Touch Down方法。该方法根据选择的内容更改突出显示的图像。但是当选择按钮时,会调用该方法,因此高亮显示图像会发生变化,但显示的是带有色调的普通/默认图像。我测试过使用的图像不是nil。当按下处于选定状态的UIButton时,会显示带有色调的正常状态。为什么不使用高亮图像,是否有另一种显示所选高光图像的方法?

2 个答案:

答案 0 :(得分:2)

为什么要在IBAction方法中设置突出显示的状态?您只需在创建时为您设置突出显示的图像按钮。它会自动切换。选中时添加色调是'选择'的默认行为。没有分配高亮显示的图像时。

如果您使用Interface Builder,只需在其中指定突出显示的图像。

我假设您正在寻找正常的按钮选择行为,并将您的IBAction方法设置为touchUpInside事件。

答案 1 :(得分:1)

我通过使用选定的状态和通知(而不是通过UI)解决了这个问题。调用通知时,我将图像更改为默认状态,更改所选状态,然后将图像更改为选定状态。

<强>更新: 我从另一个与我类似的问题中提出了一个更好的想法。这样做的方法是setSelected

中的事情
- (void)setSelected:(BOOL)selected
{
    if ( selected )
    {
        [self setImage:[CFCHStyleSheet imageForTickButtonChecked] forState:UIControlStateNormal];
        [self setImage:[CFCHStyleSheet imageForTickButtonChecked] forState:UIControlStateSelected];
        [self setImage:[CFCHStyleSheet imageForTickButtonCheckedDisabled] forState:UIControlStateDisabled];
    }
    else
    {
        [self setImage:[CFCHStyleSheet imageForTickButtonUnchecked] forState:UIControlStateNormal];
        [self setImage:[CFCHStyleSheet imageForTickButtonUnchecked] forState:UIControlStateSelected];
        [self setImage:[CFCHStyleSheet imageForTickButtonUncheckedDisabled] forState:UIControlStateDisabled];
    }

    [super setSelected:selected];
}