0

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

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

我试图做的是防止在执行操作期间意外按下按钮。我希望不会意外同时按下按钮。我正在尝试制作一个应用程序,供可能不小心按下多个按钮的残障人士使用。我希望这有助于解释为什么我想阻止多次按下,即使是同一个按钮。

感谢您的关注和帮助。

4

2 回答 2

0

作为替代方法,您可以使用下面发布的方法全局阻止取消阻止事件,而不是单独阻止每个按钮:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];

但小心点。使用这些方法的错误策略可能会阻止您的应用程序。

于 2013-11-11T12:38:49.150 回答
0

作为最简单的解决方案之一,您可以在视图类中添加一个布尔标志变量,并在您的 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;
}

并对所有其他 IBActions 做同样的检查

于 2013-11-11T11:01:09.960 回答