0

私はiOS用の電卓チュートリアルを行っており、小数スタイルを行うための調査を行っています。これまでの調査では、以下のコードを実行しました

- (IBAction)digitPressed:(UIButton *)sender {
    NSString *digit = sender.currentTitle;
    NSString *decimal = @".";
    BOOL decimalAlreadyEntered = [self.display.text rangeOfString:decimal].location == NSNotFound ? NO : YES;

    if (self.userIsInTheMiddleOfEnteringANumber) {
        if (([digit isEqual:decimal] && !decimalAlreadyEntered) || !([digit isEqual:decimal])) {
            [self.display setText:[[self.display text] stringByAppendingString:digit]];
        }
    }
    else if ([self.display.text isEqual:@"0"] && digit == decimal){
        [self.display setText:[[self.display text] stringByAppendingString:digit]];
        self.userIsInTheMiddleOfEnteringANumber = YES;
    }
    else {
        [self.display setText:digit];
        self.userIsInTheMiddleOfEnteringANumber = YES;
    }
}

このコードは、ユーザーが複数の小数点を押すのを防ぎ、1 つだけに制限するのに役立ちました (2.09 のように)。涼しい!ただし、アプリの起動中に、小数点を押して数字、たとえば 1 を押すと、ラベルには (0.1) ではなく ( .1) のみが表示されます。改善のための助けは大歓迎です:)

4

1 に答える 1

0

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string で、最初の値が「.」かどうかを確認できます。次に、ユーザーが入力したテキスト値を「0.」に置き換えます。このチェックは、テキストフィールド値が「.something」の場合にのみ実行します。

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *symbol = [[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator];
    if (range.location == 0 && [string isEqualToString:symbol]) {
     // decimalseparator is first
        textField.text = [NSString stringWithFormat:@"0%@",textField.text];
        return YES;
      }
}
于 2012-06-11T11:54:06.777 に答える