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

时间:2011-12-09 08:29:47

标签: objective-c cocoa

如何禁止用户在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;
}

1 个答案:

答案 0 :(得分:1)

您必须继承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);
}