同様の質問が寄せられていますが、提供されたソリューションは最新の iOS SDK では機能しないか、この特定のケースには正確に適用できないことがわかりました。
NSNotification を使用してメソッドを呼び出します。これは、ボタン入力からの数字を使用して入力されたときに、UILabel でグループ化記号を使用して数値をフォーマットします。小数点の後にゼロが入力されていない限り、整数と小数でもうまく機能します。例えば 2000 と入力すると、2,000 と表示されますが、問題なく入力されています。23.345 を入力すると、それも問題なく表示されます。これらの数値に対して行われた計算はすべて正しく行われます。しかし、0.0001 や 0.2340007 を入力することはできません。小数点の後にゼロを取り、追加することはありません。
元のコードのアイデアは、stackoverflow の別の投稿から入手しました。
NSString *currentText = [display_ text];
currentText = [currentText stringByReplacingOccurrencesOfString:@","
withString:@""];
currentText = [currentText stringByReplacingOccurrencesOfString:@"."
withString:@"."];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@","];
[formatter setDecimalSeparator:@"."];
[formatter setMaximumFractionDigits:10];
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:currentText];
NSString *finalText = [formatter stringFromNumber:number];
NSString *lastChar = [currentText substringFromIndex:[currentText length] - 1];
if ([lastChar isEqualToString:@"."])
{
finalText = [finalText stringByAppendingString:@"."];
}
[display_ setText: finalText];
[formatter release];
フォーマッタのパラメータを使用して(私が試した)微調整をしても、小数点の後にゼロを入力することはできません。