我在优化App的时候,看到价格不能随意输入,于是就在网上找了点案例。发现有一款方法非常好,能控制你的textfield,首字符不能输入“0”或者“.”,控制小数点后面的分位数以及不让小数点出现两次。废话不多说,直接粘贴demo。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
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 == '.')
{
[self showMyMessage:@"亲,第一个数字不能为小数点!"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
if (single == '0')
{
[self showMyMessage:@"亲,第一个数字不能为0!"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
//输入的字符是否是小数点
if (single == '.')
{
if(!isHaveDian)//text中还没有小数点
{
isHaveDian = YES;
return YES;
}else{
[self showMyMessage:@"亲,您已经输入过小数点了!"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}else{
if (isHaveDian) {//存在小数点
//判断小数点的位数
NSRange ran = [textField.text rangeOfString:@"."];
if (range.location - ran.location <= 2) {
return YES;
}else{
[self showMyMessage:@"亲,您最多输入两位小数!"];
return NO;
}
}else{
return YES;
}
}
}else{//输入的数据格式不正确
[self showMyMessage:@"亲,您输入的格式不正确!"];
[textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
}
else
{
return YES;
}
}
-(void)showMyMessage:(NSString*)aInfo {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:aInfo delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alertView show];
}
如果您觉得我的文章内容对您有帮助,请点赞+关注。我会推荐出更多有用的文章。