【问题标题】:UIButton and selected highlight stateUIButton 和选中的高亮状态
【发布时间】:2012-08-17 02:01:23
【问题描述】:

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

【问题讨论】:

标签: ios ios5 uibutton


【解决方案1】:

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

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

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

【讨论】:

  • 我已经重写了我的问题。
  • 尝试使用self performSelector:withObject:afterDelay: 方法调用更改突出显示状态的方法并稍作延迟,看看是否有帮助。
【解决方案2】:

我通过使用选定的状态和通知(不是通过 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];
}

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 2013-11-22
    • 2019-06-18
    • 2011-01-16
    • 2011-11-05
    • 1970-01-01
    • 2012-02-02
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多