teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

7

凡ミス修正後

2019/01/08 10:33

投稿

hameji001
hameji001

スコア639

title CHANGED
File without changes
body CHANGED
@@ -115,7 +115,7 @@
115
115
 
116
116
  @objc func done() {
117
117
  print("ここ入ってるよ")
118
- self.textView.resignFirstResponder
118
+ self.textView.resignFirstResponder()
119
119
  self.textView.inputView = nil
120
120
  self.textView.becomeFirstResponder()
121
121
  }

6

修正1

2019/01/08 10:33

投稿

hameji001
hameji001

スコア639

title CHANGED
File without changes
body CHANGED
@@ -99,13 +99,13 @@
99
99
  self.pickerView.dataSource = self
100
100
 
101
101
  self.pickerList = ["選択肢1", "選択肢2", "選択肢3", "手動入力"]
102
+ self.textField.inputView = self.pickerView
103
+ self.textField.inputAccessoryView = self.toolbar
102
104
 
103
105
  }
104
106
 
105
107
  // UITextField
106
108
  func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
107
- textField.inputView = self.pickerView
108
- textField.inputAccessoryView = self.toolbar
109
109
  return true
110
110
  }
111
111
 

5

追記

2019/01/08 10:24

投稿

hameji001
hameji001

スコア639

title CHANGED
File without changes
body CHANGED
@@ -70,4 +70,71 @@
70
70
  ```
71
71
 
72
72
  としてみましたが、1文字遅れで表示されて、思うように動かせていません。
73
- 解決策のヒントでもいただけると幸いです。
73
+ 解決策のヒントでもいただけると幸いです。
74
+
75
+ /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
76
+ 以下、更新分(1/8)
77
+
78
+ ```Swift
79
+ import UIKit
80
+
81
+ class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
82
+
83
+ @IBOutlet weak var textView: UITextField!
84
+ var pickerView = UIPickerView()
85
+ var toolbar = UIToolbar()
86
+ var pickerList:[String] = []
87
+
88
+ override func viewDidLoad() {
89
+ super.viewDidLoad()
90
+ // Do any additional setup after loading the view, typically from a nib.
91
+
92
+ textView.delegate = self
93
+ toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 0, height: 35))
94
+ let cancelItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(ViewController.cancel))
95
+ let spacerItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
96
+ let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(ViewController.done))
97
+ toolbar.setItems([cancelItem, spacerItem, doneItem], animated: true)
98
+ self.pickerView.delegate = self
99
+ self.pickerView.dataSource = self
100
+
101
+ self.pickerList = ["選択肢1", "選択肢2", "選択肢3", "手動入力"]
102
+
103
+ }
104
+
105
+ // UITextField
106
+ func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
107
+ textField.inputView = self.pickerView
108
+ textField.inputAccessoryView = self.toolbar
109
+ return true
110
+ }
111
+
112
+ @objc func cancel() {
113
+ self.textView.resignFirstResponder()
114
+ }
115
+
116
+ @objc func done() {
117
+ print("ここ入ってるよ")
118
+ self.textView.resignFirstResponder
119
+ self.textView.inputView = nil
120
+ self.textView.becomeFirstResponder()
121
+ }
122
+
123
+ // PickerView
124
+ func numberOfComponents(in pickerView: UIPickerView) -> Int {
125
+ return 1
126
+ }
127
+
128
+ func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
129
+ return self.pickerList.count
130
+ }
131
+
132
+ func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
133
+ return self.pickerList[row]
134
+ }
135
+
136
+ func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
137
+ }
138
+
139
+ }
140
+ ```

4

間違いを訂正

2019/01/08 10:16

投稿

hameji001
hameji001

スコア639

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  ```Swift
15
15
  import UIKit
16
16
 
17
- class ViewController: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
17
+ class InputViewController: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
18
18
 
19
19
  @IBOutlet weak var textField0: UITextField!
20
20
  var toolbar = UIToolbar()

3

間違いを修正

2019/01/07 11:09

投稿

hameji001
hameji001

スコア639

title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  ```Swift
15
15
  import UIKit
16
16
 
17
- class ViewController: UIViewController, UITextFieldDelegate, UIPicker, UIPickerViewDelegate, UIPickerViewDataSource {
17
+ class ViewController: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
18
18
 
19
19
  @IBOutlet weak var textField0: UITextField!
20
20
  var toolbar = UIToolbar()

2

変更

2019/01/07 11:09

投稿

hameji001
hameji001

スコア639

title CHANGED
File without changes
body CHANGED
@@ -25,9 +25,9 @@
25
25
  super.viewDidLoad()
26
26
  textField0.delegate = self
27
27
  self.toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 0, height: 35))
28
- let cancelItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(InputPatientViewController.cancel))
28
+ let cancelItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(InputViewController.cancel))
29
29
  let spacerItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
30
- let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(InputPatientViewController.done))
30
+ let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(InputViewController.done))
31
31
  self.toolbar.setItems([cancelItem, spacerItem, doneItem], animated: true)
32
32
  self.pickerList = ["選択肢0", "選択肢1", "選択肢2", "選択肢3", "選択肢4", "手動入力(5)"]
33
33
  self.pickerView.delegate = self

1

修正1

2019/01/07 11:08

投稿

hameji001
hameji001

スコア639

title CHANGED
@@ -1,1 +1,1 @@
1
- textFieldのkeyboard表示とpickerView表示の切り替え
1
+ textFieldのkeyboard表示とpickerView表示の切り替え方法
body CHANGED
@@ -1,6 +1,6 @@
1
1
  上記を質問させてください。
2
2
 
3
- 今作成中のプログラムでtextFieldに入力をさせる際に
3
+ 今作成中のプログラムでtextField0に入力をさせる際に
4
4
  まず、最初はpickerViewを用いて、
5
5
  選択肢の中から選ばせようと思ってるんですが、
6
6
  もしその中にない場合は、keyboardで手入力をさせたいです。
@@ -51,6 +51,23 @@
51
51
  self.textField0.inputAccessoryView = toolbar
52
52
  self.textField0.becomeFirstResponder()
53
53
  }
54
+ ```
54
55
 
56
+ 苦肉の策として、mockTextFieldを新たに作って、
55
57
 
58
+ ``` Swift
59
+
60
+ func done() {
61
+ if self.pickerView.selectedRow(inComponent: 0) == 5 {
62
+ self.mockTextField.becomeFirstResponder()
63
+ }
64
+ }
65
+
66
+ func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
67
+ self.textField0.text = self.textField
68
+ return true
69
+ }
56
- ```
70
+ ```
71
+
72
+ としてみましたが、1文字遅れで表示されて、思うように動かせていません。
73
+ 解決策のヒントでもいただけると幸いです。