textField輸入控制(百分數)
阿新 • • 發佈:2018-12-21
要求輸入正確百分數
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if (string.length > 0) { unichar c = [string characterAtIndex:0]; if ((c >= '0' && c <= '9') || c == '.') { // 資料格式正確 /* * 首位不能是 . * 不能00...開頭 * 至多存在一個. * 保留兩位小數 */ if ([textField.text containsString:@"."]) { // 已存在 . if ([string isEqualToString:@"."]) { // 至多存在一個. return NO; } else { // 保留兩位小數 NSRange _range = [textField.text rangeOfString:@"."]; return range.location - _range.location <= 2; } } else { // 還未輸入. if (textField.text.length == 0) { // 首位不能是 . return ![string isEqualToString:@"."]; } else { // 不能00...開頭 NSString *regex = @"[0-9]*"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; if ([textField.text isEqualToString:@"0"] && range.location == 1 && [predicate evaluateWithObject:string]) { // 如果是0[0-9]開頭,使用[0-9]替換 textField.text = string; return NO; } else { // 不能大於100 int value = [textField.text stringByAppendingString:string].intValue; return value <= 100; } } } } else { // 資料格式錯誤 return NO; } } else { return YES; } }