[英]How can I forbid users to type numbers in a NSTextField?
How can I forbid users to type numbers in a NSTextField ? 如何禁止用户在NSTextField中键入数字?
I'm currently using a custom NSFormatter showing a popup after the users typed the value, but how can I prevent the inserting right after typing instead ? 我当前正在使用自定义NSFormatter ,在用户键入值后显示弹出窗口,但是如何防止在键入后立即插入?
thanks 谢谢
I've tried this and it almost work.. but if I type a number and then some letters ie "24jdf" the letters are still displayed (even if removed when the field looses focus). 我已经尝试过了,它几乎可以正常工作..但是,如果我输入一个数字,然后输入一些字母(例如“ 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;
}
You'll have to subclass your NSFormatter
and override the following method: 您必须
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.