UITextField
のサブクラスを作成します。
swift
1import UIKit
2
3class DatePickerTextField: UITextField {
4
5 /*
6 // Only override drawRect: if you perform custom drawing.
7 // An empty implementation adversely affects performance during animation.
8 override func drawRect(rect: CGRect) {
9 // Drawing code
10 }
11
12 */
13 let datePickerView = UIDatePicker()
14 let dateFormatter = NSDateFormatter()
15
16 let toolBar = UIToolbar()
17
18 override func awakeFromNib() {
19 NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("handleFocused:"), name: UITextFieldTextDidBeginEditingNotification, object: nil)
20 }
21
22 func handleFocused(notification: NSNotification!) {
23 datePickerView.datePickerMode = .Date
24
25 //UITextField の inputView のプロパティに UIDatePicker を設定
26 self.inputView = datePickerView
27
28 // UIToolbar の設定
29 toolBar.frame = CGRectMake(0, self.frame.size.height/6, self.frame.size.width, 40.0)
30 toolBar.layer.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height-20.0)
31 toolBar.barStyle = .BlackTranslucent
32 toolBar.tintColor = UIColor.whiteColor()
33 toolBar.backgroundColor = UIColor.blackColor()
34
35 let toolBarBtn = UIBarButtonItem(title: "完了", style: .Plain, target: self, action: "tappedToolBarBtn:")
36 let toolBarBtnToday = UIBarButtonItem(title: "今日", style: .Plain, target: self, action: "tappedToolBarBtnToday:")
37 toolBarBtn.tag = 1
38 toolBar.items = [toolBarBtn, toolBarBtnToday]
39
40 // UITextField の inputAccessoryView のプロパティに UIToolbar を設定
41 self.inputAccessoryView = toolBar
42
43 datePickerView.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents: .ValueChanged)
44 }
45
46 func handleDatePicker(sender: UIDatePicker) {
47 dateFormatter.dateFormat = "yyyy/MM/dd"
48 super.text = dateFormatter.stringFromDate(sender.date)
49 }
50
51 func tappedToolBarBtn(sender: UIBarButtonItem) {
52 super.resignFirstResponder()
53 }
54
55 func tappedToolBarBtnToday(sender: UIBarButtonItem) {
56 dateFormatter.dateFormat = "yyyy/MM/dd"
57 let currentDate = NSDate()
58 datePickerView.date = currentDate
59 super.text = dateFormatter.stringFromDate(currentDate)
60 }
61
62
63}
あとは storyboard
で Text Field
を貼り付けて、Class の設定をするか、
またはコードで DatePickerTextField
を宣言するなりしてください。
参考ページ
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/03 12:02