jueves, 24 de noviembre de 2016

iOS: Date picker for text field

Example with two text fields:

let fromDate = UITextField()
let toDate = UITextField()
let datePicker = UIDatePicker()
let dateFormatter = DateFormatter()

...

dateFormatter.dateFormat = "MM-dd-yyyy"
datePicker.datePickerMode = UIDatePicker.Mode.date
datePicker.addTarget(self, action: #selector(<YouViewController>.datePickerValueChanged(sender:)), for: UIControl.Event.valueChanged)

...

let date = Date()
fromDate.text = dateFormatter.string(from: date)
fromDate.textAlignment = NSTextAlignment.left
fromDate.inputView = datePicker
fromDate.delegate = self

let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 44))
        let doneBtn = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(dateSelected))
        let cancelBtn = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(dismissPicker))
        toolbar.setItems([cancelBtn, doneBtn], animated: false)
        fromDate.inputAccessoryView = toolbar

toDate.text = dateFormatter.string(from: date)
toDate.textAlignment = NSTextAlignment.left
toDate.inputView = datePicker
toDate.delegate = self

...

@objc func datePickerValueChanged(sender: AnyObject) {
        if (fromDate.isFirstResponder) {
            fromDate.text = dateFormatter.string(from: datePicker.date)
         
        } else {
            toDate.text = dateFormatter.string(from: datePicker.date)
        }
    }

// UITextFieldDelegate
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}

No hay comentarios:

Publicar un comentario