我想要一個的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