您的位置:首页 > 产品设计 > UI/UE

iOS UITextField 只能输入数字和小数点,只能有两位小数

2016-01-27 11:25 621 查看
#pragma mark - UITextField delegate

//textField.text 输入之前的值 string 输入的字符

- (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 showError:@"亲,第一个数字不能为小数点"];

[textField.text stringByReplacingCharactersInRange:range withString:@""];

return NO;

}

if (single == '0') {

[self showError:@"亲,第一个数字不能为0"];

[textField.text stringByReplacingCharactersInRange:range withString:@""];

return NO;

}

}

//输入的字符是否是小数点

if (single == '.') {

if(!isHaveDian)//text中还没有小数点

{

isHaveDian = YES;

return YES;

}else{

[self showError:@"亲,您已经输入过小数点了"];

[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 showError:@"亲,您最多输入两位小数"];

return NO;

}

}else{

return YES;

}

}

}else{//输入的数据格式不正确

[self showError:@"亲,您输入的格式不正确"];

[textField.text stringByReplacingCharactersInRange:range withString:@""];

return NO;

}

}

else

{

return YES;

}

}

- (void)showError:(NSString *)errorString

{

[(AppDelegate *)[UIApplication sharedApplication].delegate showErrorView:errorString];

[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(removeErrorView2) userInfo:nil repeats:NO];

[self.moneyTf resignFirstResponder];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: