- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet*cs;
cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];
NSString*filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
BOOL basicTest = [string isEqualToString:filtered];
// 只能输入数字小数点
if(!basicTest) { // 不相等
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=='.')//数据格式正确
{
//首字母不能为0和小数点
if([textField.text length]==0){
if(single == '.'){
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
if (single=='.')
{
if(!isHaveDian)//text中还没有小数点
{
isHaveDian=YES;
return YES;
}else
{
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
if (isHaveDian)//存在小数点
{
//判断小数点的位数
NSRange ran=[textField.text rangeOfString:@"."];
int tt=range.location-ran.location;
// if (tt <= 2){
// return YES;
// }else{
// return NO;
// }
}
else
{
return YES;
}
}
}else{//输入的数据格式不正确
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
return YES;
}
}
}