0
我正在学习针对iOS的Objective-C编程,并且遇到了一个小问题。我正在构建一个基本的RPN计算器,我正在努力让用户可以输入浮点数。但是,我需要防止他们输入非法的浮点数(如1324.343.34)。我试着添加一个BOOL和一个if语句,但它太乱了,所以我只是添加了一个单独的动作,如果他们按下“。”。不幸的是,尽管decimalPressed操作是第二次,它仍然在数字按下操作之前,我需要它后去。有任何想法吗?如何在Cocoa Touch中优先考虑一个动作(让它先行)
- (IBAction)digitPressed:(UIButton *)sender
{
NSString *digit = [sender currentTitle];
if (self.userIsInTheMiddleOfEnteringANumber) {
if (self.dotPressed == NO || ([digit isEqualToString:@"."]==NO)) {
self.display.text = [self.display.text stringByAppendingString:digit];
self.dotPressed = NO;
}
} else {
self.display.text = digit;
self.userIsInTheMiddleOfEnteringANumber = YES;
}
}
- (IBAction)decimalPressed:(UIButton *)sender {
self.dotPressed = YES;
}
这将工作,谢谢。但我觉得它只是绕过这个问题,而这更像是一个学习问题。就像,如果一个按钮转到两个动作(或3,4等),我该如何选择它到底是哪个? – Acoustic77
我会假设它会按照您添加目标/操作的顺序调用它们。如果你使用Interface Builder,我建议删除你的UI和按钮之间的连接,并尝试使用UIButton的代码添加它们: - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents) controlEvents;希望有所帮助! –
是的,我试图打破连接,并按照我希望它们运行的顺序添加它们,但没有成功。我只是改变了行动完成的任务,这解决了问题,但我仍然没有学会如何去做我想要的事。 – Acoustic77