iOS电商项目金额输入判断处理

产品的需求:

  1. 只能输入数字和保留两位小数,设置keyboardType UIKeyboardTypeDecimalPad即可
  2. 可以输入0,继续输入数字则把0抹掉,输入小数点则还可以继续输入两位数字,不能输入多个小数点

基本代码如下

/// <UITextFieldDelegate> 小数点前8位数字 小数点后2位
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    
    NSString *toString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if (toString.length > 0) {
        NSString *stringRegex = @"(([0]|(0[.]\\d{0,2}))|([1-9]\\d{0,8}(([.]\\d{0,2})?)))?";
        NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stringRegex];
        BOOL flag = [phoneTest evaluateWithObject:toString];
        //判断如果第一位输入0 第二位不是小数点的话就把0抹掉
        if ([textField.text hasPrefix:@"0"] && textField.text.length == 1 && ![string isEqualToString:@"."]) {
            self.moneyInputTextfield.text = [string substringFromIndex:1];
            return YES;
        }
        if (!flag) {
            return NO;
        }
    }
    return YES;
}

上一篇:在破公司上班的最后一天,老板让我给他开发一个拨号程序——升级版(Java实现)


下一篇:创建两个线程,每个线程的工作都是在自己的界面的TextField区域中从左到右动态地显示一个字符串|JAVA