- textField.keyboardType = UIKeyboardTypeDecimalPad;
- // A number pad with a decimal point.苹果给的注释就是一个带小数点的键盘
- #pragma mark- UITextFieldDelegate
- - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
- {
- if (textField.keyboardType == UIKeyboardTypeDecimalPad) {
- 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 alertView:@"亲,第一个数字不能为小数点"];
- [textField.text stringByReplacingCharactersInRange:range withString:@""];
- return NO;
- }
- }else if (textField.text.length == 1 && [textField.text isEqualToString:@"0"]){
- if (single != '.') {
- // [self alertView:@"亲,第一个数字不能为0"];
- [textField.text stringByReplacingCharactersInRange:range withString:@""];
- return NO;
- }
- }
- if (single=='.')
- {
- if(!isHaveDian)//text中还没有小数点
- {
- isHaveDian=YES;
- return YES;
- }else
- {
- // [self alertView:@"亲,您已经输入过小数点了"];
- [textField.text stringByReplacingCharactersInRange:range withString:@""];
- return NO;
- }
- }
- else
- {
- if (isHaveDian)//存在小数点
- {
- //判断小数点的位数
- NSRange ran=[textField.text rangeOfString:@"."];
- NSInteger tt=range.location-ran.location;
- if (tt <= 2){
- return YES;
- }else{
- // [self alertView:@"亲,您最多输入两位小数"];
- return NO;
- }
- }
- else
- {
- return YES;
- }
- }
- }else{//输入的数据格式不正确
- // [self alertView:@"亲,您输入的格式不正确"];
- [textField.text stringByReplacingCharactersInRange:range withString:@""];
- return NO;
- }
- }
- else
- {
- return YES;
- }
- }
- return YES;
- }
输入带小数点的键盘(小数点为2位为例)
最新推荐文章于 2021-07-27 15:32:27 发布