LoginSignup
5
3

More than 3 years have passed since last update.

TextFieldタップでDatePickerを呼ぶ

Last updated at Posted at 2019-12-22

下図のように編集開始時にDatePickerを起動させ,時間変更時に変更時間をTextFieldに反映させます.

まずTextFieldのDelegateを追加します.

ViewController.swift
class ViewController: UIViewController, UITextFieldDelegate 

次に以下のコードを追加hします

ViewController.swift

var toolBar:UIToolbar!
@IBOutlet var wakeTimeTextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()

    wakeTimeTextField.delegate = self
    setupToolbar()
}
func setupToolbar() {
        //datepicker上のtoolbarのdoneボタン
        toolBar = UIToolbar()
        toolBar.sizeToFit()
        let toolBarBtn = UIBarButtonItem(title: "DONE", style: .plain, target: self, action: #selector(doneBtn))
        toolBar.items = [toolBarBtn]
        wakeTimeTextField.inputAccessoryView = toolBar
}

func textFieldDidBeginEditing(_ textField: UITextField) {
    let datePickerView:UIDatePicker = UIDatePicker()
    datePickerView.datePickerMode = UIDatePicker.Mode.time
    textField.inputView = datePickerView
    datePickerView.addTarget(self, action: #selector(datePickerValueChanged(sender:)), for: UIControl.Event.valueChanged)
}

    //datepickerが選択されたらtextfieldに表示
@objc func datePickerValueChanged(sender:UIDatePicker) {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat  = "H:mm";
    wakeTimeTextField.text = dateFormatter.string(from: sender.date)
}

//toolbarのdoneボタン
@objc func doneBtn(){
    wakeTimeTextField.resignFirstResponder()
}

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3