转自:http://blog.csdn.net/chengyakun11/article/details/8494292
- //textField.text 输入之前的值 string 输入的字符
- - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
- {
- if ([textField1.text rangeOfString:@"."].location==NSNotFound) {
- isHaveDian=NO;
- }
- if ([string length]>0)
- {
- unichar single=[string characterAtIndex:0];//当前输入的字符
- if ((single >='0' && single<='9') || single=='.')//数据格式正确
- {
- //首字母不能为0和小数点
- if([textField1.text length]==0){
- if(single == '.'){
- [self alertView:@"亲,第一个数字不能为小数点"];
- [textField1.text stringByReplacingCharactersInRange:range withString:@""];
- return NO;
- }
- if (single == '0') {
- [self alertView:@"亲,第一个数字不能为0"];
- [textField1.text stringByReplacingCharactersInRange:range withString:@""];
- return NO;
- }
- }
- if (single=='.')
- {
- if(!isHaveDian)//text中还没有小数点
- {
- isHaveDian=YES;
- return YES;
- }else
- {
- [self alertView:@"亲,您已经输入过小数点了"];
- [textField1.text stringByReplacingCharactersInRange:range withString:@""];
- return NO;
- }
- }
- else
- {
- if (isHaveDian)//存在小数点
- {
- //判断小数点的位数
- NSRange ran=[textField1.text rangeOfString:@"."];
- int tt=range.location-ran.location;
- if (tt <= 2){
- return YES;
- }else{
- [self alertView:@"亲,您最多输入两位小数"];
- return NO;
- }
- }
- else
- {
- return YES;
- }
- }
- }else{//输入的数据格式不正确
- [self alertView:@"亲,您输入的格式不正确"];
- [textField1.text stringByReplacingCharactersInRange:range withString:@""];
- return NO;
- }
- }
- else
- {
- return YES;
- }
- }