проверка ввода текста в textField

swift

#1

Ребята, подскажите запутавшемуся!
есть кнопка сохранить и 3 обязательных textField
1.как правильно сделать проверку на наличие введены даных во всех трех полях чтоб кнопка “сохранить” была активна только при вводе текста во всех textField
2.как выполнить проверку изменений значений в textField,если они изначально уже заполнены (пользователь переходит в окно “редактировать” и все textField уже заполнены) и выселить кнопку сохранить только при изменении даных?
Прошу прощения если спрашиваю элементарное, просто иногда бывает ступор.
Всем большое спасибо


Как отслеживать, что и когда я печатаю в textField
#2

Можно вот так следить за изменениями текстового поля:

textField.addTarget(self, action: #selector(YourViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)

func textFieldDidChange(textField: UITextField) {
    //что-то делаете, когда текстовое поле меняет значение
}

#3

спасибо!подскажи это все работает на один textField, а как сделать если мне нужно три проверить?или я что-то не понял?


#4

Можно вот так:

textFields = [textField1, textField2, textField3]
    for textField in textFields {
      textField.addTarget(self, action: #selector(ViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)
    }
  }

#5

сразу еще вопрос: но если я в textFieldDidChange напишу например активацию моей кнопки, то после прохождения написаного вами кода она активируется 3 раза, правильно?


#6

Так-то да, но Вы можете написать какую-либо булевую переменную, которая будет менять свое значение при изменении хотя бы одного из текстовых полей.

 var changed: Bool = false
  
  override func viewDidLoad() {
    super.viewDidLoad()

    textFields = [textField1, textField2, textField3]
    for textField in textFields {
      if changed == false {
      textField.addTarget(self, action: #selector(ViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)
      }
    }
  }
  
  func textFieldDidChange(textField: UITextField){
    
    if changed == false {
      print("changed")
      changed = true
    }
  }

Если найдете вариант покрасивее, то пожалуйста опубликуйте его тут.


#7

большое спасибо!если найду то опубликую!