如何禁止用户在NSTextField中输入数字?



如何禁止用户在NSTextField中输入数字?

我目前使用一个自定义的NSFormatter显示一个弹出用户键入的值,但我怎么能防止插入后键入而不是?

感谢

我试过这个,它几乎工作。但是如果我输入一个数字,然后是一些字母。"24jdf"的字母仍然显示(即使删除,当字段失去焦点)。

- (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error
//- (BOOL)getObjectValue:(id *)obj forString:(NSString *)string errorDescription:(NSString  **)error
{   
    if ([self numberFromString:partialString] == nil)
        return NO;
    return YES;
}

您必须子类化您的NSFormatter并覆盖以下方法:

-(BOOL)isPartialStringValid:(NSString **)partialStringPtr proposedSelectedRange:(NSRangePointer)proposedSelRangePtr originalString:(NSString *)origString originalSelectedRange:(NSRange)origSelRange errorDescription:(NSString **)error {
   NSString *string = *partialStringPtr;
   NSCharacterSet *numbers = [NSCharacterSet decimalDigitCharacterSet];
   return (NSNotFound == [string rangeOfCharacterFromSet:numbers].location);
}

最新更新