Нажатие клавиши Backspace в UITextfield не удаляет - PullRequest
0 голосов
/ 19 декабря 2018

В настоящее время у меня есть текстовое поле в формате ### / ##.При вводе он печатает в правильном формате, но по какой-то странной причине при удалении он будет удаляться только до знака «/» и не будет удалять до этого.Например, если текст (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 голосов
/ 19 декабря 2018

Вы также можете попробовать это, если у вас есть формат ### / ## для текстового поля

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