Iphone 用户可以在测验应用程序上按多个按钮

Iphone 用户可以在测验应用程序上按多个按钮,iphone,button,Iphone,Button,我正在构建一个测验应用程序 这是一个问题和四个可能的答案 数据存储在plist文件中 测试人员注意到,在一个问题中,他实际上可以在计时器结束前找到所有答案 这是个问题 每个按钮都有上述代码 -(IBAction)firstbtn_Click:(id)sender { //first_button_clicked [self.btnOne addTarget:self action:@selector(answerWithTag:) forControlEvents:UIContr

我正在构建一个测验应用程序 这是一个问题和四个可能的答案 数据存储在plist文件中 测试人员注意到,在一个问题中,他实际上可以在计时器结束前找到所有答案 这是个问题 每个按钮都有上述代码

-(IBAction)firstbtn_Click:(id)sender
{
    //first_button_clicked
    [self.btnOne addTarget:self action:@selector(answerWithTag:) forControlEvents:UIControlEventTouchUpInside];
    [self answerWithTag:self.btnOne.tag];

}

任何想法???

单击一个按钮后禁用所有按钮。如果禁用除已单击按钮之外的所有其他按钮,则可以继续单击已单击的按钮,并且可以重复操作。创建一个像这样的通用方法

   -(void)disableButtons
    {
        [self.btnOne setEnabled:NO];
        [self.btnTwo setEnabled:NO];
        [self.btnThree setEnabled:NO];
        [self.btnFour setEnabled:NO];
    }
-(IBAction)firstbtn_Click:(id)sender
{
    //first_button_clicked
    [self.btnOne addTarget:self action:@selector(answerWithTag:) forControlEvents:UIControlEventTouchUpInside];
    [self answerWithTag:self.btnOne.tag];

    [self disableButtons];
}
-(IBAction)anyButtonClicked:(id)sender
{
    UIButton *button = (UIButton *)sender;
    [self answerWithText:[button text]];
    [self disableButtons];
}
在所有类似这样的方法操作中调用该方法

   -(void)disableButtons
    {
        [self.btnOne setEnabled:NO];
        [self.btnTwo setEnabled:NO];
        [self.btnThree setEnabled:NO];
        [self.btnFour setEnabled:NO];
    }
-(IBAction)firstbtn_Click:(id)sender
{
    //first_button_clicked
    [self.btnOne addTarget:self action:@selector(answerWithTag:) forControlEvents:UIControlEventTouchUpInside];
    [self answerWithTag:self.btnOne.tag];

    [self disableButtons];
}
-(IBAction)anyButtonClicked:(id)sender
{
    UIButton *button = (UIButton *)sender;
    [self answerWithText:[button text]];
    [self disableButtons];
}
我不确定
answerWithTag:
的方法到底在做什么,但按照它所说的,您正在设置
answerWithTag:
的目标,以便不必要地单击按钮。问题是,如果您没有禁用按钮,那么在下一次按钮调用中,您的
answerWithTag:
方法将被调用两次

<>你可以考虑把你的函数减少到

-(IBAction)firstbtn_Click:(id)sender
{
    //first_button_clicked
    [self answerWithTag:self.btnOne.tag];
    [self disableButtons];
}
此外,如果所有按钮的操作都相同,并且您希望只传递答案,请尝试在按钮上设置答案的文本,您可以这样做

   -(void)disableButtons
    {
        [self.btnOne setEnabled:NO];
        [self.btnTwo setEnabled:NO];
        [self.btnThree setEnabled:NO];
        [self.btnFour setEnabled:NO];
    }
-(IBAction)firstbtn_Click:(id)sender
{
    //first_button_clicked
    [self.btnOne addTarget:self action:@selector(answerWithTag:) forControlEvents:UIControlEventTouchUpInside];
    [self answerWithTag:self.btnOne.tag];

    [self disableButtons];
}
-(IBAction)anyButtonClicked:(id)sender
{
    UIButton *button = (UIButton *)sender;
    [self answerWithText:[button text]];
    [self disableButtons];
}

将所有按钮的动作设置为
anyButtonClicked
。这将减少代码的长度,并使其更易于管理。

单击一个按钮后,您可以禁用所有其他按钮。谢谢您的快速回复。请澄清一下。我将您提到的所有代码都放在每个按钮的所有不活动状态中?或者我误解了?就在看到您的答案之前,我尝试了一些方法。可能不正确,但似乎不正确它可以工作…例如,我使用的第一个单击按钮:[self.btnTwo setEnabled:NO];[self.btnThree setEnabled:否];[self.btnFour setEnabled:否];对于每一个其他按钮,相同且不使用下面的特定按钮编号…它似乎起作用了…我也会尝试您提供的新解决方案谢谢您刚才所做的…我在这里发布了另一个关于uiswitch的问题,如果您能帮上忙,再次感谢!