1

UIButton 具有正常/默认、突出显示和选定的图像。然后我有一个IBAction被调用的方法Touch Down。该方法更改突出显示的图像,具体取决于它是否被选中。但是当按钮被选中时,该方法被调用,因此高亮图像被改变,但是显示的是带有色调的正常/默认图像。我已经测试了使用的图像不在nil. 当处于选中状态的 UIButton 被按下时,会发生什么情况会显示带有颜色的正常状态。为什么不使用突出显示图像,是否有另一种显示选定突出显示图像的方式?

4

2 回答 2

2

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

如果您使用 Interface Builder,只需在此处分配突出显示的图像。

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

于 2012-08-21T17:13:05.407 回答
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];
}
于 2012-10-01T15:16:55.320 回答