这个作用需要在下面的方法中进行判断
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
============代码片段如下==========
//textField只能输入@"0123456789.",且只能输入到小数点后两位,第一位不能是小数点
-(BOOL)isValidateCharacter:(NSString*)string andTextField:(UITextField*)textField
{
//用来标示字符串中是否存在小数点
BOOL exitPoint=NO;
BOOL res=YES;
//合法的字符集合
NSCharacterSet*tmpSet=[NSCharacterSet characterSetWithCharactersInString:@"0123456789."];
int i=0;
while (i<string.length) {
//首先判断是否有不合法的字符
NSString*subString=[string substringWithRange:NSMakeRange(i, 1)];
NSRange range=[subString rangeOfCharacterFromSet:tmpSet];
if (range.length==0) {
res= NO; //说明subString是不合法的字符
break;
}
//第一个字符不能是小数点
if ((textField.text.length==0)&&([subString isEqualToString:@"."])) {
res=NO;
break;
}
//只能有一个小数点
if ([subString isEqualToString:@"."]) {
exitPoint=YES;
NSString*str=textField.text;
NSRange strRange=[str rangeOfString:@"."];
if (strRange.length>0) {
res=NO;//textfield已经存在小数点,而且即将输入的也是小数点
break;
}
}
//小数点后两位
NSRange rangePoint=[textField.text rangeOfString:@"."];
if (rangePoint.length>0) {
NSString*point=[[textField.text componentsSeparatedByString:@"."] lastObject];
if (point.length>=2) {
res=NO;
break;
}
}
i++;
}
return res;
}
联系客服