Если вы хотите добиться отключения и включения с помощью кнопки на основе ввода textField, вы можете реализовать UITextFieldDelegate
- textFieldDidChange
Код будет выглядеть так:
@IBOutlet weak var loginButton: UIButton!
@IBOutlet weak var firstNameTextField: UITextField!
@IBOutlet weak var lastNameTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
firstNameTextField.delegate = self
lastNameTextField.delegate = self
passwordTextField.delegate = self
emailTextField.delegate = self
}
И в нижней части файла ViewController вы можете создать расширение для UITextFieldDelegate
extension YourViewController: UITextFieldDelegate {
func textFieldDidChangeSelection(_ textField: UITextField) {
checkButtonState()
}
func checkButtonState() {
var validFirstName = false
var validLastName = false
var validPassword = false
var validEmail = false
if firstNameTextField.text != "" {
validFirstName = true
}
if lastNameTextField.text != "" {
validLastName = true
}
if passwordTextField.text != "" {
validPassword = true
}
if emailTextField.text != "" {
validEmail = true
}
if validFirstName && validLastName && validPassword && validEmail {
loginButton.isEnabled = true
} else {
loginButton.isEnabled = false
}
}
}
Тогда я бы также рекомендовал еще одну проверку при нажатии кнопки, аналогично приведенному выше ответу, но я думаю, что это может быть более обширная проверка по электронной почте и паролю. (Логин может быть не так важен, но во время регистрации вы можете захотеть подтвердить пароль и адрес электронной почты, а не пустой)
Вы можете создать свои собственные правила, но обычно это что-то вроде
Подтвердите пароль: • Требуется 6-8 символов
if string.count < 6 {
print("Password must be more than 6 characters")
}
• Может потребоваться одна заглавная буква или одна цифра
Подтвердить адрес электронной почты: • Должен содержать «@»
if !string.contains("@") {
print("probably not a valid email")
}
Вы можете проверить строки в текстовом поле, чтобы увидеть, соответствуют ли они критериям, если пользователю не возвращается логин или ошибка регистрации. Надеюсь, это поможет вам двигаться в правильном направлении