在IBAction完成之前禁用所有按钮

时间:2013-11-10 22:15:24

标签: ios uibutton

我在一个视图上有四个按钮。每个按钮都有不同的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;
    }

其他三个按钮还有三个其他动作事件。

我试图做的是防止在执行期间意外按下按钮。我希望不会偶然同时按下按钮。我正在尝试制作一个应用程序,供身体受到挑战的人使用,他们可能会意外按下多个按钮。我希望这有助于解释为什么我想阻止多次按下甚至相同的按钮。

感谢您的关注和帮助。

2 个答案:

答案 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];

但要小心。使用这些方法的错误策略可能会阻碍您的申请。