Xcode / Swift |Используйте .addTarget и guard на UIButton - PullRequest
0 голосов
/ 17 октября 2018

То, что я получил до сих пор, - это различные поля TextField, которые должны быть заполнены, а также простая кнопка (используется как checkButton) для принятия условий использования.Теперь я хотел бы написать, что поля textFields должны быть заполнены, и кнопка должна быть проверена.Для кнопки, которую я выбрал, она меняет изображение в зависимости от того, настроено ли состояние «По умолчанию» или «Выбрано».Я думаю, что есть проблема с .addTarget в функции setupTargetsAreGiven и self.button_aGB.isSelected == true в guard.Последняя функция - это только анимация, которая изменяет изображение при нажатии.

func setupTargetsAreGiven() {
    self.textField_username.addTarget(self, action: #selector(checkTargetsAreGiven), for: .editingChanged)
    self.textField_eMail.addTarget(self, action: #selector(checkTargetsAreGiven),
        for: .editingChanged)
    self.textField_password.addTarget(self, action: #selector(checkTargetsAreGiven), for: .editingChanged)
    self.textField_confirmPassword.addTarget(self, action: #selector(checkTargetsAreGiven),
        for: .editingChanged)
    self.button_aGB.addTarget(self, action: #selector(checkTargetsAreGiven), for: .touchUpInside)
}

@objc func checkTargetsAreGiven(sender: Any) {

    self.textField_username.text = self.textField_username.text?.trimmingCharacters(in: .whitespaces)
    self.textField_eMail.text = self.textField_eMail.text?.trimmingCharacters(in: .whitespaces)
    self.textField_password.text = self.textField_password.text?.trimmingCharacters(in: .whitespaces)
    self.textField_confirmPassword.text = self.textField_confirmPassword.text?.trimmingCharacters(in: .whitespaces)

    guard
        let username = self.textField_username.text, !username.isEmpty,
        let eMail = self.textField_eMail.text, !eMail.isEmpty,
        let password = self.textField_password.text, !password.isEmpty,
        let confirmPassword = self.textField_confirmPassword.text,
        password == confirmPassword,
        self.button_aGB.isSelected == true
        else
    {
        self.button_register.backgroundColor = UIColor(red:0.20, green:0.29, blue:0.37, alpha:1.0)
        return
    }
    self.button_register.backgroundColor = UIColor(red:0.10, green:0.74, blue:0.61, alpha:1.0)
    self.isAbleToContinue = true
}

@IBAction func checkBox_aGB_pressed(_ sender: UIButton) {
    UIView.animate(withDuration: 0.5, delay: 0.1, options: .curveLinear, animations: {
        sender.transform = CGAffineTransform(scaleX: 0.1, y: 0.1)
    }) { (success) in
        sender.isSelected = !sender.isSelected

        UIView.animate(withDuration: 0.5, delay: 0.1, options: .curveLinear, animations: {
            sender.transform = .identity
        }, completion: nil)
    }
}
...