NSNumberFormatter тысяча разделителей
Я хочу создать тысячу сепараторов. Это работает, когда я набираю цифры в текстовое поле. Тем не менее, я не работаю, когда я удаляю число из текстового поля.
Скриншот, когда я набрал:
Снимок экрана, когда я удаляю число из текстового поля:
Но я хочу иметь номер, такой как: 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;
}