2016-11-09 5 views
1

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

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

testasdsadasdas.

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

enter image description here

Но я хочу, чтобы иметь номер, как: 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; 
} 
+0

Где находится этот код? И почему вы удаляете свой период? –

+0

Внутри shouldChangeCharactersInRange пользователи хотят изменить его, чтобы написать правильный текст, поэтому он должен работать, пока пользователи удаляют тексты. –

+0

Вы говорите о '-textField: shouldChangeCharactersInRange: replacementString:'? Выполняется ли ваш код при удалении? –

ответ

0

Попробуйте любой из следующих решений: -

Решение 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; 
    } 
+0

То же самое, он работает, пока я набираю текст, но он не работает, пока я удаляю. –

+0

Где добавить этот код? – User511

+0

Внутри -textField: shouldChangeCharactersInRange: replacementString: –