2016-11-09 1 views
1

Je veux créer mille seperator. Cela fonctionne quand je tape des nombres au champ de texte. Pourtant, je ne fonctionne pas lorsque je supprime un nombre de textfield.NSNumberFormatter thousand seperator

Screenshot quand je tapais:

testasdsadasdas.

Capture d'écran lorsque je supprime un numéro de champ texte:

enter image description here

Mais je veux avoir un nombre comme: 121,132, pourriez-vous me aider à résoudre ce problème?

code:

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

Où ce code est-il placé? Et pourquoi supprimez-vous cette période? –

+0

Il est à l'intérieur de shouldChangeCharactersInRange, les utilisateurs veulent le modifier pour écrire du texte correct, c'est pourquoi, cela devrait fonctionner pendant que les utilisateurs suppriment des textes –

+0

Vous parlez de '-textField: shouldChangeCharactersInRange: replacementString:'? Est-ce que votre code est exécuté lors de la suppression? –

Répondre

0

Essayez l'une de ces solutions: -

Solution 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; 
} 

Solution 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

C'est pareil, ça marche pendant que je tape, mais ça ne marche pas pendant que je supprime. –

+0

Où ajoutez-vous ce code? – User511

+0

À l'intérieur de -textField: shouldChangeCharactersInRange: replacementString: –