-2

Swift でのプロジェクト ビルドに IQKeyBoardManager を使用しています。特定の View Controller で問題が発生しています。テキスト フィールドを下っていき、生年月日テキスト フィールドに到達したら、キーボードを閉じたいと思います。日付ピッカーの値を変更してキーボードを閉じる機能を追加しようとしましたが、機能しませんでした。datePicker がアクティブになったらすぐにキーボードを閉じたいです。日付ピッカー

     @objc func keyboardDoneClicked() {

    switch openedTextFieldTag {
    case 1:
            firstName.resignFirstResponder()
            lastName.becomeFirstResponder()
            routing_number.resignFirstResponder()
            account_number.resignFirstResponder()
            account_holder_name.resignFirstResponder()
    case 2:
            firstName.resignFirstResponder()
            lastName.resignFirstResponder()
            routing_number.becomeFirstResponder()
            account_number.resignFirstResponder()
            account_holder_name.resignFirstResponder()
    case 3:
            firstName.resignFirstResponder()
            lastName.resignFirstResponder()
            routing_number.becomeFirstResponder()
            account_number.resignFirstResponder()
            account_holder_name.resignFirstResponder()
    case 4:
            firstName.resignFirstResponder()
            lastName.resignFirstResponder()
            routing_number.resignFirstResponder()
            account_number.becomeFirstResponder()
            account_holder_name.resignFirstResponder()
    case 5:
            firstName.resignFirstResponder()
            lastName.resignFirstResponder()
            routing_number.resignFirstResponder()
            account_number.resignFirstResponder()
            account_holder_name.resignFirstResponder()
    default:
        break
    }
}


   func textFieldDidBeginEditing(_ textField: UITextField) {
    openedTextFieldTag = 0
    if textField == self.date_of_birth {
        view.endEditing(true)
        self.datePicker.isHidden = false
        self.doneBtn.isHidden = false
        self.view.endEditing(true)
        date_of_birth.resignFirstResponder()
        firstName.resignFirstResponder()
        lastName.resignFirstResponder()
        routing_number.resignFirstResponder()
        account_number.resignFirstResponder()
        account_holder_name.resignFirstResponder()
    } else {
        self.datePicker.isHidden = true
        self.doneBtn.isHidden = true
    }
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    if textField == firstName {
        firstName.resignFirstResponder()
        lastName.becomeFirstResponder()
        routing_number.resignFirstResponder()
        account_number.resignFirstResponder()
        account_holder_name.resignFirstResponder()
    } else if textField == lastName {
        firstName.resignFirstResponder()
        lastName.resignFirstResponder()
        routing_number.becomeFirstResponder()
        account_number.resignFirstResponder()
        account_holder_name.resignFirstResponder()
    } else if textField == routing_number {

        firstName.resignFirstResponder()
        lastName.resignFirstResponder()
        routing_number.becomeFirstResponder()
        account_number.resignFirstResponder()
        account_holder_name.resignFirstResponder()
    } else if textField == account_number {
        firstName.resignFirstResponder()
        lastName.resignFirstResponder()
        routing_number.resignFirstResponder()
        account_number.becomeFirstResponder()
        account_holder_name.resignFirstResponder()
    } else if textField == account_holder_name {
        firstName.resignFirstResponder()
        lastName.resignFirstResponder()
        routing_number.resignFirstResponder()
        account_number.resignFirstResponder()
        account_holder_name.resignFirstResponder()
        date_of_birth.resignFirstResponder()

        self.datePicker.isHidden = false
        self.doneBtn.isHidden = false
    }

    return true
}

  @objc func pickerEditingDidEnd(_ date: UIDatePicker ) {
    print(date)
    datePicker.isHidden = true
    self.doneBtn.isHidden = true

    let formatter = DateFormatter()

    formatter.dateFormat = "dd/MM/yyyy"

    self.date_of_birth.text = formatter.string(from: self.datePicker.date)
    UserDefaults.standard.set(datePicker.date, forKey: "dob")

}


    override func viewDidLoad(){
     datePicker.date = Date()
    datePicker.datePickerMode = .date
    datePicker.addTarget(self, action: #selector(pickerEditingDidEnd), for: .editingDidEnd)
    datePicker.backgroundColor = UIColor.white
    datePicker.layer.borderColor = THEME_BLUE_COLOR.cgColor
    datePicker.layer.borderWidth = 1.0
    datePicker.isHidden = true
    self.view.addSubview(datePicker)

    }
4

2 に答える 2

0

書く必要はないと思いますしbecomeFirstResponder()resignFirstResponder()それIQKeyBoardManagerを管理します。そのため、各テキスト フィールドのすべてを削除し、日付ピッカーを確認します。

あなたも試すことができます、

@objc func pickerEditingDidEnd(_ date: UIDatePicker ) {
    print(date)
    datePicker.isHidden = true
    self.doneBtn.isHidden = true

    let formatter = DateFormatter()

    formatter.dateFormat = "dd/MM/yyyy"

    self.date_of_birth.text = formatter.string(from: self.datePicker.date)
    UserDefaults.standard.set(datePicker.date, forKey: "dob")
    self.date_of_birth.resignFirstResponder()

}
于 2020-01-10T04:49:52.320 に答える