Что я хотел бы сделать, это создать IBAction из одного из ваших текстовых полей и установить событие на Editing Changed
:
Код должен выглядеть так:
@IBAction func textFieldEditingDidChange(_ sender: UITextField) {
}
Затем вы можете подключить одну и ту же розетку к обоим текстовым полям, перетащив из розетки в оставшееся поле. Если вы правильно подключили оба, щелкнув по кружку слева от вашего IBAction, вы увидите два текстовых поля:
Действие теперь будет запускаться при каждом изменении текста в либо ваших полей.
Затем в верхней части файла я бы создал вычисляемое свойство, которое возвращает false, если в обоих полях нет чего-либо:
var shouldEnableButton: Bool {
guard let text1 = textField1.text, let text2 = textField2.text else {
return false
}
return text1.isEmpty && text2.isEmpty ? false : true
}
Наконец, мы добавляем shouldEnableButton
к нашему IBAction:
@IBAction func textFieldEditingDidChange(_ sender: UITextField) {
button.isEnabled = shouldEnableButton
}
Важно
Когда вы подключите второе текстовое поле к розетке, оно будет неправильно назначать Editing Did End
в качестве события:
Удалите это событие, нажмите и перетащите с Editing Changed
на свой IBAction: