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