无法设置逗号 NSNumberFormater
Can't set comma NSNumberFormater
如果可以,请帮助我。
我为我的文本字段创建了格式器,然后在 ViewController 我试图设置它:
OnlyNeddedNumbers *numbersOnly = [[OnlyNeddedNumbers alloc] init];
[self.betAmount setFormatter:numbersOnly];
但是当我启动应用程序时,我无法设置点或逗号。目的是允许用户在 NSTextField
中仅设置双精度值
@interface OnlyNeddedNumbers : NSNumberFormatter
@end
@implementation OnlyNeddedNumbers
- (BOOL)isPartialStringValid:(NSString*)partialString newEditingString:(NSString**)newString errorDescription:(NSString**)error
{
if([partialString length] == 0) {
return NO;
}
NSString *scanString = [NSString stringWithFormat:@"%@", [partialString stringByReplacingOccurrencesOfString:@"," withString:@""]];
scanString = [scanString stringByReplacingOccurrencesOfString:@"." withString:@""];
NSScanner* scanner = [NSScanner scannerWithString:scanString];
if(!([scanner scanInt:0] && [scanner isAtEnd])) {
NSBeep();
return NO;
} else if ([scanString isEqualToString:@"0"]) {
NSBeep();
return NO;
}
return YES;
}
@end
您不需要特殊的子类。你的目标是
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setDecimalSeparator:@","];
[formatter setMinimum:@(-100000)];
[formatter setMaximum:@(100000)];
当您设置最小值和最大值时,它会自动验证该值。不需要其他代码。
请记住 0.00 也是一个有效的双精度值。
您还可以测试值 [object doubleValue] -> 我认为这是正确的方法。如果用户插入文本,那么它将被转换为双精度数字 0。
如果可以,请帮助我。
我为我的文本字段创建了格式器,然后在 ViewController 我试图设置它:
OnlyNeddedNumbers *numbersOnly = [[OnlyNeddedNumbers alloc] init];
[self.betAmount setFormatter:numbersOnly];
但是当我启动应用程序时,我无法设置点或逗号。目的是允许用户在 NSTextField
中仅设置双精度值@interface OnlyNeddedNumbers : NSNumberFormatter
@end
@implementation OnlyNeddedNumbers
- (BOOL)isPartialStringValid:(NSString*)partialString newEditingString:(NSString**)newString errorDescription:(NSString**)error
{
if([partialString length] == 0) {
return NO;
}
NSString *scanString = [NSString stringWithFormat:@"%@", [partialString stringByReplacingOccurrencesOfString:@"," withString:@""]];
scanString = [scanString stringByReplacingOccurrencesOfString:@"." withString:@""];
NSScanner* scanner = [NSScanner scannerWithString:scanString];
if(!([scanner scanInt:0] && [scanner isAtEnd])) {
NSBeep();
return NO;
} else if ([scanString isEqualToString:@"0"]) {
NSBeep();
return NO;
}
return YES;
}
@end
您不需要特殊的子类。你的目标是
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setDecimalSeparator:@","];
[formatter setMinimum:@(-100000)];
[formatter setMaximum:@(100000)];
当您设置最小值和最大值时,它会自动验证该值。不需要其他代码。
请记住 0.00 也是一个有效的双精度值。 您还可以测试值 [object doubleValue] -> 我认为这是正确的方法。如果用户插入文本,那么它将被转换为双精度数字 0。