123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- //
- // SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
- // SPDX-License-Identifier: GPL-3.0-or-later
- //
- @objcMembers class DatePickerTextField: UITextField {
- public let datePicker = UIDatePicker()
- override init(frame: CGRect) {
- super.init(frame: frame)
- self.commonInit()
- }
- required init?(coder: NSCoder) {
- super.init(coder: coder)
- self.commonInit()
- }
- private func commonInit() {
- self.tintColor = .clear
- }
- public func getDate(startingDate: Date?, minimumDate: Date?, completion: @escaping (Date) -> Void) {
- guard self.canBecomeFirstResponder else {
- return
- }
- datePicker.datePickerMode = .dateAndTime
- datePicker.locale = .current
- datePicker.preferredDatePickerStyle = .wheels
- if let startingDate {
- datePicker.date = startingDate
- }
- if let minimumDate {
- datePicker.minimumDate = minimumDate
- }
- self.inputView = datePicker
- let cancelButton = UIBarButtonItem(systemItem: .cancel, primaryAction: UIAction { [weak self] _ in
- self?.resignFirstResponder()
- })
- let doneButton = UIBarButtonItem(systemItem: .done, primaryAction: UIAction { [weak self] _ in
- if let self {
- completion(self.datePicker.date)
- self.resignFirstResponder()
- }
- })
- let toolBar = UIToolbar(frame: .init(x: 0, y: 0, width: 320, height: 44))
- toolBar.setItems([cancelButton, UIBarButtonItem(systemItem: .flexibleSpace), doneButton], animated: false)
- self.inputAccessoryView = toolBar
- self.becomeFirstResponder()
- }
- }
|