简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM