尝试自动格式化日期条目的文本字段

时间:2014-09-20 20:48:17

标签: ios swift uitextfield

我正在尝试将自动日期格式添加到我的应用中的文本字段,但是我遇到了问题。

基本上,我希望文本字段格式化用户在输入此格式时输入的数字 - xx-xx-xxxx。实际的格式似乎有效,但问题是:

1)用户开始输入后,文本字段会添加“0”。 2)在点击删除按钮之前,文本字段不会更新格式。

这是我的代码:

    func textFieldChanged(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: NSString!) -> Bool {
    var formatter = NSNumberFormatter()

    var lengthString: String = string
    let newLength = countElements(transactionDateInput.text!) + countElements(lengthString) - range.length

    if string.length == 0 {
        formatter.groupingSeparator = "/"
        formatter.groupingSize = 4
        formatter.usesGroupingSeparator = true
        formatter.secondaryGroupingSize = 2

        var num: NSString = transactionDateInput.text
        num = num.stringByReplacingOccurrencesOfString("-", withString: "")
        var str: NSString = formatter.stringFromNumber(NSNumber.numberWithDouble(num.doubleValue))
        transactionDateInput.text = str
        return true && newLength <= 10
    } else {
        formatter.groupingSeparator = "/"
        formatter.groupingSize = 2
        formatter.usesGroupingSeparator = true
        formatter.secondaryGroupingSize = 2

        var num: NSString = transactionDateInput.text
        if num.isEqualToString("") {
            num = num.stringByReplacingOccurrencesOfString("-", withString: "")
            var str: NSString = formatter.stringFromNumber(NSNumber.numberWithDouble(num.doubleValue))
            transactionDateInput.text = str
        }
        return true && newLength <= 10
    }
}

我该如何解决这些问题?

1 个答案:

答案 0 :(得分:0)

您是否考虑过隐形文本字段?然后,您可以在可见文本字段中将文本捕获为已键入和输出格式化文本。这样你就可以控制一切。