質問編集履歴

1

発生している問題とコード内容を修正しました。

2020/08/12 09:07

投稿

Risney
Risney

スコア148

test CHANGED
File without changes
test CHANGED
@@ -3,8 +3,6 @@
3
3
 
4
4
 
5
5
  ・UIDatePickerからUITextfieldへ出力したい
6
-
7
- ・UIDatePickerに「Doneボタン」を実装し、押下時にピッカーを閉じたい
8
6
 
9
7
 
10
8
 
@@ -12,23 +10,21 @@
12
10
 
13
11
 
14
12
 
15
- textFieldタップ押下すると
13
+ ピッカー選択後、「Done」ボタンを押下しても
16
14
 
17
- ピッカーは表示されるが、
18
-
19
- ピッカーを動かすことができずフリーズしたままになってしまう。
20
-
21
- Doneボタンも応なしです
15
+ テキストフィールドに映されません
22
16
 
23
17
 
24
18
 
25
- 特にエラーメッセージはありません。
19
+ また、特にエラーメッセージはありません。
20
+
21
+
26
22
 
27
23
  ### 該当のソースコード
28
24
 
29
25
 
30
26
 
31
- ```swift
27
+ ```ViewController
32
28
 
33
29
  import UIKit
34
30
 
@@ -36,7 +32,9 @@
36
32
 
37
33
  class ViewController: UIViewController {
38
34
 
35
+
36
+
39
- @IBOutlet weak var textField: UITextField!
37
+ @IBOutlet weak var dateField: UITextField!
40
38
 
41
39
 
42
40
 
@@ -50,15 +48,17 @@
50
48
 
51
49
 
52
50
 
51
+ dateField.text = "DatePicker"
52
+
53
53
  // ピッカー設定
54
54
 
55
- datePicker.datePickerMode = UIDatePickerMode.dateAndTime
55
+ datePicker.datePickerMode = UIDatePicker.Mode.date
56
56
 
57
57
  datePicker.timeZone = NSTimeZone.local
58
58
 
59
59
  datePicker.locale = Locale.current
60
60
 
61
- textField.inputView = datePicker
61
+ dateField.inputView = datePicker
62
62
 
63
63
 
64
64
 
@@ -76,9 +76,19 @@
76
76
 
77
77
  // インプットビュー設定
78
78
 
79
- textField.inputView = datePicker
79
+ dateField.inputView = datePicker
80
80
 
81
- textField.inputAccessoryView = toolbar
81
+ dateField.inputAccessoryView = toolbar
82
+
83
+
84
+
85
+ // デフォルト日付
86
+
87
+ let formatter = DateFormatter()
88
+
89
+ formatter.dateFormat = "yyyy-MM-dd"
90
+
91
+ datePicker.date = formatter.date(from: "2020-8-12")!
82
92
 
83
93
  }
84
94
 
@@ -88,7 +98,7 @@
88
98
 
89
99
  @objc func done() {
90
100
 
91
- textField.endEditing(true)
101
+ dateField.resignFirstResponder()
92
102
 
93
103
 
94
104
 
@@ -98,7 +108,59 @@
98
108
 
99
109
  formatter.dateFormat = "yyyy-MM-dd"
100
110
 
101
- textField.text = "(formatter.string(from: Date()))"
111
+ dateField.text = "(formatter.string(from: Date()))"
112
+
113
+ }
114
+
115
+
116
+
117
+ override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
118
+
119
+ dateField.resignFirstResponder()
120
+
121
+ }
122
+
123
+ }
124
+
125
+
126
+
127
+ ```
128
+
129
+
130
+
131
+ ```CustomTextField
132
+
133
+
134
+
135
+ import UIKit
136
+
137
+
138
+
139
+ final class CustomTextField: UITextField {
140
+
141
+
142
+
143
+ /* 入力キャレット非表示 */
144
+
145
+ override func caretRect(for position: UITextPosition) -> CGRect {
146
+
147
+ return .zero
148
+
149
+ }
150
+
151
+ /* 範囲選択カーソル非表示 */
152
+
153
+ override func selectionRects(for range: UITextRange) -> [UITextSelectionRect] {
154
+
155
+ return []
156
+
157
+ }
158
+
159
+ /* コピー・ペースト・選択等のメニュー非表示 */
160
+
161
+ override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
162
+
163
+ return false
102
164
 
103
165
  }
104
166