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