ios - UIButton 突出显示设置行为怪异

Posted

技术标签:

【中文标题】ios - UIButton 突出显示设置行为怪异【英文标题】:ios - UIButton highlight setting act weird 【发布时间】:2012-05-29 05:29:08 【问题描述】:

我突出显示的图像显示不同。 这是我的情况。

[button setImage:"normal image" forState:UIControlStateNormal];
[button setImage:"hover image" forState:UIControlStateHighlighted];
[button setImage:"hover image" forState:UIControlStateSelected];

- (IBAction)buttonTouched:(id)sender 
    UIButton *selectButton = sender;


    if (_currentSelectedTabButton.tag == selectButton.tag) 
        //TODO refresh view controller
        return ;
    

    _currentSelectedTabButton.selected = NO;
    selectButton.selected = YES;

    _currentSelectedTabButton = selectButton;

    触摸按钮。 按钮显示突出显示的图像。 (正确的图片) 按钮的状态设置为“选中” 触摸按钮。 按钮显示不同的高亮图像。

当按钮处于选中状态时,突出显示的图像显示不正确。 有什么想法吗?

【问题讨论】:

如果您在按下按钮时始终将按钮设置为选中(selectButton.selected = YES;),那么在第一次单击后它不会改变状态,这是故意的吗? 这是我来源的一部分。我将附加整个方法的来源。它总是被选中。如果我选择另一个按钮,之前选择的按钮的选定属性更改为 NO,当前选定的按钮的选定属性更改为 YES。 这是因为当你设置 setImage:forControllState:UIControlStatesSelected; 【参考方案1】:

这是因为您同时设置了 setImage:forControllState:UIControlStatesSelected 和 setHighlighted 图像,当您第一次按下按钮时,它的状态未被选中时,突出显示的图像会显示出来,再次按下按钮时,它会显示选定的图像,因为现在按钮处于选中状态。 (简而言之,突出显示的图像仅在按钮的非选定状态下工作)。

【讨论】:

谢谢尼克。我应该设置 (UIControlStateSelected | UIControlStateHighlighed) 状态。【参考方案2】:

UIControlStateSelected | UIControlStateHighlighted 是一个独立于 UIControlStateHighLighed 的状态

【讨论】:

以上是关于ios - UIButton 突出显示设置行为怪异的主要内容,如果未能解决你的问题,请参考以下文章

什么控制事件开始和结束突出显示UIButton的状态

UIButton在iOS7中没有显示突出显示

禁用 UIButton 的突出显示 UIControl 状态

如何创建具有渐变和突出显示的 UIButton?

针对突出显示的背景设置 UIButton 突出显示的标题文本,从而产生暗淡的文本

屏幕左侧的 UIButton(在 iOS 7 导航滑动区域中)未突出显示