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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章