最も簡単な方法は、左揃えのテキストを持つテキスト フィールドに対して、右揃えのテキストのラベルを配置することです。
ユーザーがテキストフィールドの編集を開始したら、通貨記号を設定します。
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.currencyLabel.text = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol];
}
それを textField のテキストの一部として保持したい場合は、そこに配置したシンボルを削除しないようにする必要があるため、もう少し複雑になります。
// Set the currency symbol if the text field is blank when we start to edit.
- (void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField.text.length == 0)
{
textField.text = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol];
}
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];
// Make sure that the currency symbol is always at the beginning of the string:
if (![newText hasPrefix:[[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]])
{
return NO;
}
// Default:
return YES;
}
@Aadhiraが指摘しているように、ユーザーに表示しているため、数値フォーマッターを使用して通貨をフォーマットする必要もあります。