数字の入力に小数点を使用すると、国や地域の形式によって小数点が変わります。
ポイント「。」としてかもしれません。またはカンマ"、"として
、アプリを使用するデバイスを制御できません。
リージョン形式でコンマを使用すると、計算が正しく行われません。5,6を入れるのは、5を数回だけ入れるのと同じで、56を同じ回数入れるのと同じです。
そして、それは私がプログラムで両方を許可したとしてもです。および、TextFieldへの入力として。
数字を句読点パッドを使用せずにこれを回避するにはどうすればよいですか。おそらく、コンマ "、"での入力を避けるように指示する
必要があります。これは、必要な数字と小数の入力のみであり、小数パッドの方がはるかに優れています。
4 に答える
これにはNSNumberFormatterを使用する必要があります。これは、さまざまなロケールを処理するように設定できるためです。
フォーマッタを作成します。
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setLocale:[NSLocale currentLocale]];
これを使って:
NSNumber *number = [numberFormatter numberFromString: string]; //string is the textfield.text
デバイスのロケールがロケールに設定されている場合、ここで、の小数点記号は,
、数字キーパッドが使用し、フォーマッタも同様に使用します。それらのグループ化セパレータは.
他のロケールの場合はその逆になります。
NSNumberFormatterは非常に洗練されているため、データフォーマッタガイドのセクションも読む必要があります。また、アプリがそのような処理を行う場合、多くの通貨処理(変換ではなく表示)も認識します。
NSNumberFormatterのクラスメソッドも使用できます
NSString* formattedString = [NSNumberFormatter
localizedStringFromNumber:number
numberStyle:NSNumberFormatterCurrencyStyle];
現地の国が小数点にコンマを使用していることを特定する
var isUsesCommaForDecimal : Bool {
let nf = NumberFormatter()
nf.locale = Locale.current
let numberLocalized = nf.number(from: "23,34")
if numberLocalized != nil {
return true
} else {
return false
}
}
1つの方法は、textFieldに「、」が含まれているかどうかを確認することです。
含まれている場合は、「。」に置き換えてください。そして、すべての算術演算を実行します。
とにかく、すべてのtextFieldsとtextViewsをNSStringオブジェクトとして読み取るので、入力値を操作して、必要に応じて変換できます。
また、結果を表示しながら「。」を置き換えます。「、」を付けると、ユーザーは地域の形式に応じて快適に感じることができます。