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