//限制輸入長(zhǎng)度并只能輸入數(shù)字
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == self.numberTextF) {
//這里的if時(shí)候?yàn)榱双@取刪除操作,如果沒(méi)有次if會(huì)造成當(dāng)達(dá)到字?jǐn)?shù)限制后刪除鍵也不能使用的后果.
if (range.length == 1 && string.length == 0) {
return YES;
}
//so easy
else if (self.numberTextF.text.length >= 8) {
self.numberTextF.text = [textField.text substringToIndex:8];
return NO;
}
}
return [self validateNumber:string];
}
- (BOOL)validateNumber:(NSString*)number {
BOOL res = YES;
NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
int i = 0;
while (i < number.length) {
NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
NSRange range = [string rangeOfCharacterFromSet:tmpSet];
if (range.length == 0) {
res = NO;
break;
}
i++;
}
return res;
}
//限制輸入長(zhǎng)度并只能輸入數(shù)字和小數(shù)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == self.numberTextF) {
if ([textField.text rangeOfString:@"."].location==NSNotFound) {
_isHaveDian = NO;
}
if ([textField.text rangeOfString:@"0"].location==NSNotFound) {
_isFirstZero = NO;
}
if ([string length]>0) {
//這里的if時(shí)候?yàn)榱双@取刪除操作,如果沒(méi)有次if會(huì)造成當(dāng)達(dá)到字?jǐn)?shù)限制后刪除鍵也不能使用的后果.
if (range.length == 1 && string.length == 0) {
return YES;
}
//so easy
else if (self.numberTextF.text.length >= 8) {
self.numberTextF.text = [textField.text substringToIndex:8];
return NO;
}
//當(dāng)前輸入的字符
unichar single=[string characterAtIndex:0];
//數(shù)據(jù)格式正確
if ((single >='0' && single<='9') || single=='.') {
if([textField.text length]==0){
if(single == '.'){
//首字母不能為小數(shù)點(diǎn)
return NO;
}
if (single == '0') {
_isFirstZero = YES;
return YES;
}
}
if (single=='.') {
//text中還沒(méi)有小數(shù)點(diǎn)
if(!_isHaveDian) {
_isHaveDian=YES;
return YES;
}else{
return NO;
}
}else if(single=='0') {
if ((_isFirstZero&&_isHaveDian)||(!_isFirstZero&&_isHaveDian)) {
//首位有0有.(0.01)或首位沒(méi)0有.(10200.00)可輸入兩位數(shù)的0
if([textField.text isEqualToString:@"0.0"]){
return NO;
}
NSRange ran=[textField.text rangeOfString:@"."];
int tt=(int)(range.location-ran.location);
if (tt <= 2){
return YES;
}else{
return NO;
}
}else if (_isFirstZero&&!_isHaveDian){
//首位有0沒(méi).不能再輸入0
return NO;
}else{
return YES;
}
}else {
if (_isHaveDian) {
//存在小數(shù)點(diǎn),保留兩位小數(shù)
NSRange ran=[textField.text rangeOfString:@"."];
int tt= (int)(range.location-ran.location);
if (tt <= 2){
return YES;
}else{
return NO;
}
}else if(_isFirstZero&&!_isHaveDian){
//首位有0沒(méi)點(diǎn)
return NO;
}else{
return YES;
}
}
}else{
//輸入的數(shù)據(jù)格式不正確
return NO;
}
}else {
return YES;
}
}
return YES;
}