0

グループ区切りの数値を編集するUITextFieldには、編集中にグループ区切り記号を切り替える必要があります。それ以外の場合、返される値 (値として保存されるNSNumber) は、グーピング セパレーターの配置ミスにより (NULL) になります (図を参照して、数値が別の桁で拡張され、たとえば "50.0000" になることを想像してください)。

どうすればこれを達成できますか?

ここに画像の説明を入力

現在、値は-(void) textFieldDidEndEditing:(UITextField *)textFieldメソッドで処理されます。

(私のロケールはドイツ語なので、"." は小数点記号ではなくグループ区切り記号です!) しかし、すべての地域でコードが機能するようにしています。

4

3 に答える 3

1

thedjnivekと彼の 2 番目の提案に感謝します。少し調整する必要がありましたが、今では魔法のように機能します。ここで同じ問題を抱えているすべての人のために、私の最終的なコード:

-(void) textFieldDidEndEditing:(UITextField *)textField
{

NSMutableString* mstring = [[textField text] mutableCopy];

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];
[numberFormatter setLocale:[NSLocale currentLocale]];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSString* localeSeparator = [[NSLocale currentLocale]
                             objectForKey:NSLocaleGroupingSeparator];
NSNumber* number = [numberFormatter numberFromString:[mstring
                stringByReplacingOccurrencesOfString:localeSeparator withString:@""]];

    [textField setText:[numberFormatter stringFromNumber:number]];        
}
于 2013-07-02T18:39:05.830 に答える
0

ここで答えを見ることができます:

Objective Cで3桁ごとにカンマを追加する方法は?

独自の数値書式設定を行わないでください。ほとんどの場合、すべてのエッジ ケースを正しく取得したり、考えられるすべてのロケールを正しく処理したりすることはできません。数値データをローカライズされた文字列表現にフォーマットするには、NSNumberFormatter を使用します。

NSNumberFormatter インスタンス メソッド -setGroupingSeparator: を使用して、グループ化セパレータを @"." に設定します。(または、[[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator]; @ntesler に感謝) と -setGroupingSize: を使用して、3 桁ごとにグループ化セパレータを配置します。

++、ケビン・マチャド

于 2013-06-28T08:16:10.673 に答える