OK、方法は次のとおりです。
まず、UITextField
カテゴリを実装します。それからあなたは自分自身に言います:
[self addTarget:self action:@selector(formatTextAsNumber) forControlEvents:UIControlEventEditingChanged];
そしてformatTextAsNumber
、これが魅力を発揮する方法です。
- (void)formatTextAsNumber {
[self removeTarget:self action:@selector(formatTextAsNumber) forControlEvents:UIControlEventEditingChanged];
if ([self.text length] > 0) {
NSString *currentText = [NSString stringWithString:self.text];
currentText = [currentText stringByReplacingOccurrencesOfString:kGroupingSeperator withString:@""];
currentText = [currentText stringByReplacingOccurrencesOfString:@"," withString:@"."];
NSString *suffix = [currentText substringFromIndex:[currentText length] - 1];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSLocale *trLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"tr_TR"] autorelease];
[formatter setLocale:trLocale];
NSNumber *number = [NSNumber numberWithDouble:[currentText doubleValue]];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@"."];
NSString *finalText = [formatter stringFromNumber:number];
if ([suffix isEqualToString:@"."]) {
finalText = [finalText stringByAppendingString:@","];
}
self.text = finalText;
[formatter release];
}
[self addTarget:self action:@selector(formatTextAsNumber) forControlEvents:UIControlEventEditingChanged];
}