如何使按钮保持按下状态?

Posted

技术标签:

【中文标题】如何使按钮保持按下状态?【英文标题】:How do I make a button stay pressed? 【发布时间】:2013-08-26 04:54:15 【问题描述】:

好的,我正在构建一个几乎完成的应用程序。我只是遇到了一个问题,当我按下按钮时它会发出声音并且按钮的图像会发生变化。然而,图像只有在被触摸或“突出显示”时才会改变,我希望按钮图像在音效持续时间内保持变化,然后在音效之后我希望它恢复到原始图像。无论如何我可以为“突出显示”选项设置 UIButton“设置时间”或其他内容吗?

有时我会感到很尴尬,因为我似乎被这些最琐碎的事情绊倒了,当我处理核心编码异常出色并且几乎在几天内完成一个完整的应用程序时,但这是我的第一个应用程序,我'我仍然是 XCode 的新手。我非常感谢这个社区的帮助,任何推动我前进的答案都会受到赞赏!

对于我在 iPhone 上输入的问题格式,我进一步道歉我希望它不会太尴尬或缺乏细节。如果有人需要更多详细信息,请询问!

【问题讨论】:

您可以为按钮的 Selected 状态设置图像,并在 touchUpInside 上设置属性 selected = YES。在声音结束时,您可以取消选择它 有没有办法让它自动取消选择?这样用户就不必再次按下按钮来恢复原始图像。 声音结束后自动取消选择,用户无需按下按钮... 好的,我明天在电脑前试一试!您应该将此作为答案,以便我可以验证它是否对我有用! :) 【参考方案1】:

将图像放入XIB中按钮的属性选择图像中并按下时

[(UIButton *)[self.view viewWithTag:buttonTag] setSelected:Yes];

【讨论】:

【参考方案2】:

可能会有帮助

[btnClear setBackgroundImage:[UIImage imageNamed:@"blue_button.png"]
                            forState:UIControlStateHighlighted];

如果这不成功,则使用下面的状态之一

   UIControlStateNormal               ,
   UIControlStateHighlighted          ,
   UIControlStateDisabled             ,
   UIControlStateSelected             ,
   UIControlStateApplication          ,
   UIControlStateReserved             . 

【讨论】:

【参考方案3】:

1.您不希望图像在突出显示和选定状态下有任何反射。所以你只需为所有状态放置相同的图像,例如

[btnClear setBackgroundImage:[UIImage imageNamed:@"blue_button.png"]
                            forState:UIControlStateNormal];
[btnClear setBackgroundImage:[UIImage imageNamed:@"blue_button.png"]
                            forState:UIControlStateHighlighted];
[btnClear setBackgroundImage:[UIImage imageNamed:@"blue_button.png"]
                            forState:UIControlStateSelected];

2.现在如果你想在声音停止时改变图像而不是制作

[btnClear setBackgroundImage:[UIImage imageNamed:@"red_button.png"]
                            forState:UIControlStateNormal];
[btnClear setBackgroundImage:[UIImage imageNamed:@"red_button.png"]
                            forState:UIControlStateHighlighted];
[btnClear setBackgroundImage:[UIImage imageNamed:@"red_button.png"]
                            forState:UIControlStateSelected];

再次点击按钮,您只需切换第一个图像。

【讨论】:

【参考方案4】:

您可以使用声音播放器的一些委托方法来切换背景图像的音效。播放完声音后,更改背景图像。

例如

-(void) musicDidFinishPlaying

[btn setBackgroundImage:[UIImage imageNamed:@"normalImage.png"]
                            forState:UIControlStateNormal];



-(IBAction) buttonClicked:(id)sender

[btn setBackgroundImage:[UIImage imageNamed:@"soundImage.png"]
                            forState:UIControlStateNormal];

【讨论】:

以上是关于如何使按钮保持按下状态?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python tkinter中按下按钮之前使窗口状态空闲?

如何在android中将按钮置于按下状态

如何使用 Bootstrap 3 阻止按钮保持压抑状态

向下滚动时如何使 UIButton 在表格视图中保持选中状态

QT编程时如何使按钮的颜色发生变化

按下时如何使按钮变大? (安卓工作室)