UIButton 高亮设置不会粘住

Posted

技术标签:

【中文标题】UIButton 高亮设置不会粘住【英文标题】:UIButton highlight setting won't stick 【发布时间】:2011-06-23 14:09:02 【问题描述】:

这里肯定有很多 UIButton 问题,我希望找到这个问题的答案,但没有什么比这个特定问题更重要了。

我有几个按钮,当程序运行并突出显示时,我可以为任何按钮调用button.highlighted = YES;

我想我可以使用相同的技术在按下按钮后将其高亮状态设置为“是”,然后在按下另一个按钮后将其设置为“否”。这样,当前选择仍然突出显示。

例如:

-(IBAction) buttonPressed:(UIButton *)button

    if (button.tag==1)
    
        self.button1.highlighted=YES;
        self.button2.highlighted=NO;
        // do other program stuff here
    

    if (button.tag==2)
    
        self.button2.highlighted=YES;
        self.button1.highlighted=NO;
        // do other program stuff here
    

即使我将 highlighted = YES; 代码放在 viewDidLoad 中,高亮显示也能正常工作。但是上面的代码不起作用。亮点不粘。按钮可以正常工作,并且可以执行其他需要执行的操作,但高亮显示无法粘贴。

我认为这应该是非常基本的。在任何按钮操作之后,ios 是否会以某种方式自动将所有按钮高亮设置为 NO?

【问题讨论】:

确保您在 viewDidLoad 中的第一个调用是 [super viewDidLoad] 您所说的“亮点工作正常,没有自己的”是什么意思?您的问题是要设置一个在视图出现时突出显示的按钮吗? 我的意思是,在按钮按下的上下文之外,突出显示设置工作正常,例如当它被放置在 viewDidLoad 中时,按钮突出显示。但在按钮操作中,高亮设置什么都不做。 所以我完全误解了你。我认为它在 viewDidLoad 中不起作用。也许您的 IBAction 没有被调用。 该操作被调用,并在 if 语句中执行它需要执行的所有其他操作。但亮点本身什么都不做。 【参考方案1】:

由于UIControl的文档中的声明,您可能应该使用其他方式来呈现突出显示状态:

默认情况下,控件不是 突出显示。 UIControl 自动 设置和清除此状态 当触摸进入时自动 在跟踪期间退出以及何时退出 是修饰。

【讨论】:

我想知道这是否意味着 UIControl 会影响所有按钮的所有突出显示状态,即使您只触摸其中一个按钮也是如此;因为这就是我的经历。我怀疑我需要做类似的事情:forums.macrumors.com/showthread.php?t=530998 虽然当你想要做的只是操纵一个亮点时,这样做很可惜 果然,通过使用selected 属性而不是highlight 并且只需更改所选状态的背景图像和标题文本颜色,它就像一个魅力。【参考方案2】:

您可以尝试使用“selected”属性而不是“highlighted”属性。

【讨论】:

以上是关于UIButton 高亮设置不会粘住的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIButton 的高亮属性设置为 NO?

UIButton 禁用高亮

ios UIButton设置高亮状态下的背景色

UIButton:为选中的高亮 UI 状态设置背景颜色(不是图像)

如何在nib文件中按下时禁用UIButton高亮显示?

如何禁用 UIButton 的高亮控制状态?