Objective c Can';t集逗号NSNumberFormat

Objective c Can';t集逗号NSNumberFormat,objective-c,macos,nsnumberformatter,Objective C,Macos,Nsnumberformatter,如果可以的话,请帮帮我 我为我的文本字段创建了格式化程序,然后在ViewController中尝试设置它: OnlyNeddedNumbers *numbersOnly = [[OnlyNeddedNumbers alloc] init]; [self.betAmount setFormatter:numbersOnly]; 但当我启动应用程序时,我不能设置点或逗号。其目的是允许用户在NSTEXT字段中只设置两个值 @interface OnlyNeddedNumbers : NSNumber

如果可以的话,请帮帮我

我为我的文本字段创建了格式化程序,然后在ViewController中尝试设置它:

OnlyNeddedNumbers *numbersOnly = [[OnlyNeddedNumbers alloc] init];
[self.betAmount setFormatter:numbersOnly];
但当我启动应用程序时,我不能设置点或逗号。其目的是允许用户在NSTEXT字段中只设置两个值

@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也是一个有效的双精度值。 您还可以测试值[对象双值] ->我会认为这是正确的方法。如果用户插入文本,则该文本将转换为双倍数字0


我正在使用OS X。它是针对OS X的程序