ユーザーにテキストフィールドに金額を入力してもらいたいのですが、入力したとおりに値をフォーマットしたいと思います。つまり、ユーザーが 4 桁目を入力すると、適切な場所に 1000 を表すカンマが表示されます。例: 3,450
現在、テキスト フィールド デリゲート メソッド「shouldChangeCharactersInRange」と NSNumberFormatter を使用しようとしています。残念ながら、私は成功していません。誰かが私を正しい方向に向けることができますか? ありがとう!
ユーザーにテキストフィールドに金額を入力してもらいたいのですが、入力したとおりに値をフォーマットしたいと思います。つまり、ユーザーが 4 桁目を入力すると、適切な場所に 1000 を表すカンマが表示されます。例: 3,450
現在、テキスト フィールド デリゲート メソッド「shouldChangeCharactersInRange」と NSNumberFormatter を使用しようとしています。残念ながら、私は成功していません。誰かが私を正しい方向に向けることができますか? ありがとう!
UILabel
1 つのオプションは、透明な背景を持つ を の上に重ねることUITextField
です。の として登録し、delegate
次UITextField
を実装します。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
次に、ユーザーが入力するたびにこのメソッドが呼び出され、新しい値を取得して整数に変換し、NSNumberFormatter を介して渡し、UILabel を更新してこのフォーマットされた値を表示できるようにします。
static NSNumberFormatter *formatter;
- (BOOL)textField:(UITextField *)aTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *textFieldValue = [aTextField.text stringByAppendingString:string];
if (range.length > 0)
textFieldValue = [aTextField.text substringToIndex:range.location];
if ([textFieldValue isEqualToString:@""])
self.formattedLabel.text = textFieldValue;
else
{
NSDecimalNumber *newValue = [[NSDecimalNumber alloc] initWithString:textFieldValue];
if (!formatter) formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
self.formattedLabel.text = [formatter stringFromNumber:newValue];
}
return YES;
}