swift - validando UITextField

Eu tenho essas tomadas no meu aplicativo:

@IBOutlet var name1: UITextField!

@IBOutlet var name2: UITextField!

@IBOutlet var name3: UITextField!

@IBOutlet var name4: UITextField!

@IBOutlet var newButton: UIButton!

O que eu tentei fazer é o seguinte:

Toda vez que o usuário digita algo em um desses quatro campos de texto ou exclui algo, quero verificar se algum campo de texto está vazio

Se algum campo de texto estiver vazio, o botão deverá ser desativado.

Se todo o campo de texto estiver definido (não vazio), o botão deverá estar ativado.

Meu Código:

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

    setButton()

    return true
}

func setButton() {

    let inputValid = checkInput()

    if inputValid {

        newButton.enabled = true

    } else {

        newButton.enabled = false

    }

}

func checkInput() -> Bool {

    let name1Value = name1.text
    let name2Value = name2.text
    let name3Value = name3.text
    let name4Value = name4.text

    if !name1Value.isEmpty && !name2Value.isEmpty && !name3Value.isEmpty && !name4Value.isEmpty {

        return true

    }

    return false

}

Ok, funciona 50% por enquanto.

Quando digito um caractere em cada campo de texto, o botão ainda está desativado.

Quando adiciono um segundo a qualquer campo de texto, o botão fica ativado etc.

Alguém poderia me ajudar com isso?

Saudações e obrigado!

questionAnswers(5)

yourAnswerToTheQuestion