Всегда устанавливайте «0» в UITextField, если он пуст, даже после ввода чего-либо и повторного выполнения / удаления - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть 5 текстовых полей в ViewController, для которых я хотел бы автоматически установить число «0» после удаления записанных чисел.

По умолчанию установлено значение «0» до ввода чисел из раскадровки ( что правильно). Но после удаления записанных чисел текстовое поле остается пустым. Я хотел бы, чтобы он автоматически устанавливался в «0», когда снова пуст. И не только заполнитель, но и фактический номер.

До ввода чисел

При вводе чисел

После ввод номера

1 Ответ

1 голос
/ 13 апреля 2020

Сделать контроллер представления делегатом текстового поля и реализовать следующие методы:

extension ViewController: UITextFieldDelegate {
    func textFieldDidChangeSelection(_ textField: UITextField) {
        if textField.text?.isEmpty == true {
            textField.text = "0"
        }
    }

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if textField.text?.isEmpty == true && string.isEmpty {
            textField.text = "0"
            return false
        } else if textField.text == "0" {
            textField.text = string
            return false
        }
        return true
    }
}

Если пользователь полностью удаляет текст, в текстовом поле будет отображаться «0». Если пользователь начинает печатать с начальным значением «0», «0» исчезнет и отобразит введенный пользователем текст.

Редактировать: чтобы установить контроллер представления делегатом текстового поля, щелкните правой кнопкой мыши ( или Ctrl + щелчок) и перетащите из текстового поля в контроллер представления в раскадровке:

storyboard

и выберите делегата:

delegate

Если вы не используете раскадровку или не хотите ее использовать, вы всегда можете сделать это программно.

    override func viewDidLoad() {
        super.viewDidLoad()

        textField.delegate = self
    }
...