在UITextfield中按退格键不删除

时间:2018-12-19 03:55:55

标签: swift uitextfield uitextfielddelegate

当前,我有一个格式为### / ##的文本字段。键入时,键入的格式正确,但是出于某种奇怪的原因,删除时只会删除,直到'/'号为止,并且在此之前不会删除。例如,如果文本为(555/66),它将删除直到(555 /),然后停止删除。任何想法如何解决这个问题?这是代码。

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

 if string.count == 0 {
                var text = textField.text!
                let start = text.startIndex
                let beginRange = text.index(start, offsetBy: range.location)
                let endRange = text.index(start, offsetBy: range.location + range.length)
                text = String(text.prefix(upTo: beginRange))
                    + String(text.suffix(from: endRange))
                text = text.replacingOccurrences(of: "/", with: "")
                if text.count >= 2 {
                    text = String(text.prefix(3)) + "/" + String(text.dropFirst(3))
                }

                textField.text = text

                return false
            }
}

1 个答案:

答案 0 :(得分:0)

如果您的文本字段格式为### / ##,也可以尝试使用此方法

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

            if string.count != 0 {
                    var text = textField.text!

                    if range.location == 3
                    {
                             text.append("/")
                             textField.text = text
                    }
                    if range.location == 6
                    {
                            return false
                    }
              }
            return true
    }