UITextField format in xx-xx-xxx

后端 未结 10 1781
暖寄归人
暖寄归人 2020-11-27 04:13

I am using UITextField and i want that should take character in the format of xx-xx-xxx only numbers.

any help ?

10条回答
  •  猫巷女王i
    2020-11-27 04:55

    Try below it will work

    Objective-C

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        int groupingSize = 2;
        if([string length] == 0) {
            groupingSize = 4;
        }
        NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init] ;
        NSString *separator = @"-";
        [formatter setGroupingSeparator:separator];
        [formatter setGroupingSize:groupingSize];
        [formatter setUsesGroupingSeparator:YES];
        [formatter setSecondaryGroupingSize:2];
        if (![string  isEqual: @""] && (textField.text != nil && textField.text.length > 0)) {
            NSString *num = textField.text;
            num = [num stringByReplacingOccurrencesOfString:separator withString:@""];
            NSString *str = [formatter stringFromNumber:[NSNumber numberWithDouble:[num doubleValue]]];
            textField.text = str;
        }
        return YES;
    }
    

    Swift-3

    extension ViewController: UITextFieldDelegate {
    
        func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
            var groupSize = 2
            let separator = "-"
            if string.characters.count == 0 {
                groupSize = 4
            }
            let formatter = NumberFormatter()
            formatter.groupingSeparator = separator
            formatter.groupingSize = groupSize
            formatter.usesGroupingSeparator = true
            formatter.secondaryGroupingSize = 2
            if var number = textField.text, string != "" {
                number = number.replacingOccurrences(of: separator, with: "")
                if let doubleVal = Double(number) {
                    let requiredString = formatter.string(from: NSNumber.init(value: doubleVal))
                    textField.text = requiredString
                }
    
            }
            return true
        }
    }
    

提交回复
热议问题