Проверить пустое TextField из PickerView - Swift

У меня есть два TextFields, которые я хочу проверить, если они пусты. Один получает данные с клавиатуры, а другой получает данные из PickerView.

Я использовал это до того, как изменил второй TextField с ввода с клавиатуры на ввод PickerView:

func setupAddTargetIsNotEmptyTextFields() {
    saveCupboardButton.isHidden = true //hidden okButton
    saveViewButtonBorder.isHidden = true
    addCupboardTextField.addTarget(self, action: #selector(textFieldsIsNotEmpty),
                                for: .editingChanged)
    addCupboardTypeTextField.addTarget(self, action: #selector(textFieldsIsNotEmpty),
                                 for: .editingChanged)

}

@objc func textFieldsIsNotEmpty(sender: UITextField) {
    sender.text = sender.text?.trimmingCharacters(in: .whitespaces)

    guard
        let name = addCupboardTextField.text, !name.isEmpty,
        let type = addCupboardTypeTextField.text, !type.isEmpty
        else
    {
        self.saveCupboardButton.isHidden = true
        self.saveViewButtonBorder.isHidden = true
        return
    }
    // enable okButton if all conditions are met
    saveCupboardButton.isHidden = false
    saveViewButtonBorder.isHidden = false
}

Это отлично работало, но затем я добавил PickerView:

func createPicker() {

    //        toolbar
    let toolbar = UIToolbar()
    toolbar.sizeToFit()

    //        doneButton
    let done = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
    toolbar.setItems([done], animated: false)

    addCupboardTypeTextField.inputAccessoryView = toolbar
    addCupboardTypeTextField.inputView = picker
}


@objc func donePressed() {
    addCupboardTypeTextField.text = pick
    self.view.endEditing(true)
}

Причиной моего addTarget .editing changed он не будет проверять, изменилось ли что-то, когда PickerView устанавливает данные. Есть ли способ это исправить? заранее спасибо

0 ответов

Другие вопросы по тегам