我在一个视图上有四个按钮。每个按钮都有不同的IBaction。一旦按下一个,我想锁定所有按钮再次按下,直到动作完成。我试图在.h中给每个人一个属性,然后在.m中的每个IBAction下,我已经设置了四个按钮中的每一个,如btnHelp.enabled =NO;
,.
等,然后在在最终结束之前结束}我已经重新启用它们。这没效果。我是Objective-C和xcode的新手,非常感谢任何帮助。
这是IOS。 .h代码是:
@property (strong, nonatomic) IBOutlet UIButton *btnHelp;
@property (strong, nonatomic) IBOutlet UIButton *btnSpin;
@property (strong, nonatomic) IBOutlet UIButton *btnScore;
@property (strong, nonatomic) IBOutlet UIButton *btnBet;
- (IBAction)slotHelp:(id)sender;
- (IBAction)slotSpin:(id)sender;
- (IBAction)slotBet:(id)sender;
- (IBAction)slotScore:(id)sender;
.m是:
@synthesize btnHelp,btnScore,btnSpin,btnBet;
- (void)viewDidLoad
{
[super viewDidLoad];
btnHelp.enabled = NO;
btnBet.enabled = NO;
btnScore.enabled = NO;
btnSpin.enabled = NO;
// do some introductory setup and give some spoken instructions
// Load plist data into array, etc
// Then reenable buttons
btnHelp.enabled=YES;
btnBet.enabled=YES;
btnScore.enabled=YES;
btnSpin.enabled=YES;
}
-(IBAction)slotHelp {
// Disable buttons while we complete action
btnHelp.enabled = NO;
btnBet.enabled = NO;
btnScore.enabled = NO;
btnSpin.enabled = NO;
// stuff to do
// Reenable buttons after action event completed
btnHelp.enabled=YES;
btnBet.enabled=YES;
btnScore.enabled=YES;
btnSpin.enabled=YES;
}
其他三个按钮还有三个其他动作事件。
我试图做的是防止在执行期间意外按下按钮。我希望不会偶然同时按下按钮。我正在尝试制作一个应用程序,供身体受到挑战的人使用,他们可能会意外按下多个按钮。我希望这有助于解释为什么我想阻止多次按下甚至相同的按钮。
感谢您的关注和帮助。
答案 0 :(得分:0)
作为最简单的解决方案之一,您可以在视图类中添加bool标志变量,并在IBaction方法中添加一个检查。像这样的东西
- (void)viewDidLoad
{
[super viewDidLoad];
lock = true;
// do some introductory setup and give some spoken instructions
// Load plist data into array, etc
// Then reenable buttons
lock = false;
}
-(IBAction)slotHelp {
if(!lock) {
lock = true;
//do what you need
lock = false;
}
并对所有其他IBAction进行相同的检查
答案 1 :(得分:0)
作为替代方式,您可以使用下面发布的方法全局阻止事件,而不是单独阻止每个按钮:
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
和
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
但要小心。使用这些方法的错误策略可能会阻碍您的申请。