NSNumberFormatter тысяча разделителей

Я хочу создать тысячу сепараторов. Это работает, когда я набираю цифры в текстовое поле. Тем не менее, я не работаю, когда я удаляю число из текстового поля.

Скриншот, когда я набрал:

testasdsadasdas,

Снимок экрана, когда я удаляю число из текстового поля:

введите описание изображения здесь

Но я хочу иметь номер, такой как: 121.132, не могли бы вы помочь мне решить эту проблему?

Код:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init] ;
[formatter setGroupingSeparator:@"."];
[formatter setGroupingSize:2];
[formatter setUsesGroupingSeparator:YES];
[formatter setSecondaryGroupingSize:3];

NSString *num = textField.text ;
if(![num isEqualToString:@""]){
    num= [num stringByReplacingOccurrencesOfString:@"." withString:@""];
    NSString *str = [formatter stringFromNumber:[NSNumber numberWithDouble:[num doubleValue]]];
    textField.text=str;
 }

1 ответ

Попробуйте любое из этих решений:

Решение 1

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSNumberFormatter *nf = [[NSNumberFormatter alloc] init] ;
    [nf setGroupingSize:3];
    [nf setCurrencyGroupingSeparator:@"."];
    [nf setUsesGroupingSeparator:YES];
    // you should create a string from number
    NSNumber *n = [NSNumber numberWithLong: 100000000];
    NSString *str = [nf stringFromNumber: n];
    textField.text = str;
    NSLog(@"My number: %@", str);
    return true;
}

Решение 2

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
           NSString *strTest = [NSString stringWithFormat:@"%@,%@",textField.text,string];
            NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init] ;
            [formatter setGroupingSeparator:@"."];
            [formatter setGroupingSize:2];
            [formatter setUsesGroupingSeparator:YES];
            [formatter setSecondaryGroupingSize:3];
            NSString *num = strTest ;
            if(![num isEqualToString:@""])
            {
                num= [num stringByReplacingOccurrencesOfString:@"." withString:@""];
                NSString *str = [formatter stringFromNumber:[NSNumber numberWithDouble:[num doubleValue]]];

                _textField.text=str;

            }

        return true;
    }
Другие вопросы по тегам