前提・実現したいこと
・UIDatePickerからUITextfieldへ出力したい
発生している問題・エラーメッセージ
ピッカー選択後、「Done」ボタンを押下しても、
テキストフィールドに反映されません。
また、特にエラーメッセージはありません。
該当のソースコード
ViewController
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var dateField: UITextField! 6 7 var datePicker: UIDatePicker = UIDatePicker() 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 dateField.text = "DatePicker" 13 // ピッカー設定 14 datePicker.datePickerMode = UIDatePicker.Mode.date 15 datePicker.timeZone = NSTimeZone.local 16 datePicker.locale = Locale.current 17 dateField.inputView = datePicker 18 19 // 決定バーの生成 20 let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35)) 21 let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil) 22 let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done)) 23 toolbar.setItems([spacelItem, doneItem], animated: true) 24 25 // インプットビュー設定 26 dateField.inputView = datePicker 27 dateField.inputAccessoryView = toolbar 28 29 // デフォルト日付 30 let formatter = DateFormatter() 31 formatter.dateFormat = "yyyy-MM-dd" 32 datePicker.date = formatter.date(from: "2020-8-12")! 33 } 34 35 // 決定ボタン押下 36 @objc func done() { 37 dateField.resignFirstResponder() 38 39 // 日付のフォーマット 40 let formatter = DateFormatter() 41 formatter.dateFormat = "yyyy-MM-dd" 42 dateField.text = "(formatter.string(from: Date()))" 43 } 44 45 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 46 dateField.resignFirstResponder() 47 } 48} 49
CustomTextField
1 2import UIKit 3 4final class CustomTextField: UITextField { 5 6 /* 入力キャレット非表示 */ 7 override func caretRect(for position: UITextPosition) -> CGRect { 8 return .zero 9 } 10 /* 範囲選択カーソル非表示 */ 11 override func selectionRects(for range: UITextRange) -> [UITextSelectionRect] { 12 return [] 13 } 14 /* コピー・ペースト・選択等のメニュー非表示 */ 15 override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { 16 return false 17 } 18}
補足情報(FW/ツールのバージョンなど)
以下のサイトを参考に作成しています。
【swift】UIDatePickerを作ってみる(日付選択ドラムロール)
swift4 UIDatePickerからUITextfieldへ出力まで
回答2件
あなたの回答
tips
プレビュー