0

我正在学习 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;
}
4

1 回答 1

0

您是在代码中还是在 Interface Builder 中将按钮连接到它们的操作?

您可以更改“。” 按钮的decimalPressed:方法在“touch down inside”而不是“touch up inside”上调用。确保digitPressed:在“touch up inside”上调用该方法。

这将确保decimalPressed:在按下按钮时首先调用,然后digitPressed:在释放按钮时调用。

您可以直接在代码中执行此操作,也可以在 Xcode 中使用 Interface Builder。

于 2013-06-23T21:37:04.947 回答