如何在Cocoa Touch中优先处理一个动作(先行它)

时间:2013-06-23 20:55:59

标签: ios objective-c cocoa-touch uibutton action

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

1 个答案:

答案 0 :(得分:0)

您是否将按钮连接到代码或Interface Builder中的操作?

您可以更改“。”按钮的decimalPressed:方法在“向内触摸”而不是“向内触摸”时调用。确保在“内部触摸”中调用digitPressed:方法。

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

您可以直接在代码中使用,也可以在Xcode中使用Interface Builder。