iOS設定輸入框只能輸入正整數或小數,且小數位數不能超過兩位
阿新 • • 發佈:2019-01-23
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ // 限制只能輸入數字 BOOL isHaveDian = YES; if ([string isEqualToString:@" "]) { return NO; } if ([textField.text rangeOfString:@"."].location == NSNotFound) { isHaveDian = NO; } if ([string length] > 0) { unichar single = [string characterAtIndex:0];//當前輸入的字元 if ((single >= '0' && single <= '9') || single == '.') {//資料格式正確 if([textField.text length] == 0){ if(single == '.') { showMsg(@"資料格式有誤"); [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } //輸入的字元是否是小數點 if (single == '.') { if(!isHaveDian)//text中還沒有小數點 { isHaveDian = YES; return YES; }else{ showMsg(@"資料格式有誤"); [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } }else{ if (isHaveDian) {//存在小數點 //判斷小數點的位數 NSRange ran = [textField.text rangeOfString:@"."]; if (range.location - ran.location <= 2) { return YES; }else{ showMsg(@"最多兩位小數"); return NO; } }else{ return YES; } } }else{//輸入的資料格式不正確 showMsg(@"資料格式有誤"); [textField.text stringByReplacingCharactersInRange:range withString:@""]; return NO; } } else { return YES; } }