我想要一个的UITextField配置为仅接受11号11号写的,我使用NSNumberFormatter和它的作品只是用数字很好,但是当我尝试设置可用的最大数量,它不起作用。设置为UITextField到最大使用NSNumberFormatter
即使分配setMaximumFractionDigits,setMaximumIntegerDigits和setMaximumSignificantDigits它并不像它应该工作,还是我失去了一些东西?请帮忙。
这里是我的代码...
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSNumberFormatter *num = [[NSNumberFormatter alloc] init];
[num setNumberStyle:NSNumberFormatterDecimalStyle];
[num setUsesSignificantDigits:YES];
[num setMaximumFractionDigits:0];
[num setMaximumIntegerDigits:11];
[num setMaximumSignificantDigits:11];
NSString *aString = [textField.text stringByReplacingCharactersInRange:range withString:string];
//[NSString stringWithFormat:@"%@%@", textField.text, string];
NSNumber *number = [num numberFromString:aString];
if (number) {
return YES;
else
return NO;
}
编辑:
我重新排序像伊恩代码表示,并提出,油墨也称,这些变化还是一样,我可以只写数字,但我可以写出超过11个数字。
EDIT 2
感谢Ian和墨水,现在的作品,我需要检查aString.length是轻微高于12,它是一个数。
if (aString.length < 12 && number)
return YES;
else
return NO;
感谢您的帮助!
提供一些什么,如果不工作的例子。 – rmaddy 2014-11-14 16:57:16
我真的建议不要这样做。基于过滤类型拒绝用户内容更改非常令人沮丧。当用户输入文本时,文本可以经历许多中间阶段,通过验证他们进入你需要他们遵循对他们来说可能不明显的路径。 – 2014-11-14 17:59:10