我正在学习iOS的Objective-C编程,我遇到了一个小问题。我正在构建一个基本的RPN计算器,我正在努力使用户可以输入浮点数。但是,我需要阻止它们输入非法的浮点数(如1324.343.34)。我尝试添加一个BOOL和一个if语句,但它太乱了,所以我只是添加一个单独的动作,如果他们按下“。”不幸的是,即使decimalPressed动作是第二个,它仍然在数字按下动作之前,我需要它去追求。有任何想法吗?
- (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;
}
答案 0 :(得分:0)
您是否将按钮连接到代码或Interface Builder中的操作?
您可以更改“。”按钮的decimalPressed:
方法在“向内触摸”而不是“向内触摸”时调用。确保在“内部触摸”中调用digitPressed:
方法。
这将确保首先调用decimalPressed:
,当按下按钮时,然后在释放按钮时调用digitPressed:
。
您可以直接在代码中使用,也可以在Xcode中使用Interface Builder。