У меня есть 4 UItextfield для ввода верхнего числа. Как 1 2 3 4. Когда я ввожу верхний номер во все текстовое поле, и если я нахожусь в последнем поле urtext - и если я нажимаю кнопку назад или клавишу x на клавиатуре - мой номер в каждом текстовом поле не удаляются. Мне не удалось удалить.

Вот мой код:

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

        let value = textField.text!
        let length = value.characters.count
        if (length == 1) {
            return false
        }
        if (textField == Field1) {
            self.performSelector(Selector("setNextResponder:"), withObject: Field2, afterDelay: 0.2)
            textField1 = string
        } else  if (textField == Field2) {
            self.performSelector(Selector("setNextResponder:"), withObject: Field3, afterDelay: 0.2)
            textField2 = string
        } else if (textField == Field3) {
            self.performSelector(Selector("setNextResponder:"), withObject: Field4, afterDelay: 0.2)
            textField3 = string
        } else if (textField == Field4) {
            textField.resignFirstResponder()
            textField4 = string
            nextButton.enabled = true
        }

     else  if (textField == Field4)
 {
     if string == "" && textField.text?.characters.count == 1 {
            Field1.text = ""
            Field2.text = ""
            Field3.text = ""
            Field4.text = ""
            Field1.becomeFirstResponder()
        }
    }


        return true
    }

Что мне не хватает?

-1
user5513630 19 Апр 2016 в 14:44

2 ответа

Лучший ответ

Сделать это можно так:

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

if textField.text?.characters.count == 1 && string == "" {
    if textField == txt2 {
        txt2.text = ""
        txt1.becomeFirstResponder()
    } else if textField == txt3 {
        txt3.text = ""
        txt2.becomeFirstResponder()
    } else if textField == txt4 {
        txt4.text = ""
        txt3.becomeFirstResponder()
    }
}
return true

}

Тем не менее, если возможно, вы должны создать отдельную кнопку с действием clearText, чтобы очистить все текстовое поле вместо очистки текстового поля от кнопки очистки. Он будет выглядеть как лучший UI / UX в соответствии с поведением кнопки очистки iOS по умолчанию.

0
HardikDG 20 Апр 2016 в 16:40

Пытаться :

func textFieldShouldClear(textField: UITextField) -> Bool {
    textField.text = ""
    textField.resignFirstResponder()
    return false
}

Также выберите подходящий вариант в инспекторе атрибутов.

enter image description here

0
A.G 19 Апр 2016 в 12:09