コードが一部分しか提示されていませんが、おそらく、4つのtextFieldのどのtextFieldも textField.delegate = self
のようにしてdelegateメソッドが呼ばれるようにしているのだと思うので、その場合は、4つのtextFieldのどのテキストフィールドでリターンキーを押しても、同じtextFieldShouldReturnメソッドが呼ばれます。
どのtextFieldのリターンキーが押されたか判定する必要がないなら、 TextField01
という引数名で受け取るのではなく、 次のコードのように textField
という引数名でテキストフィールドを受け取り、それを使って処理すればどのテキストフィールドのリターンキーが押されても同じようにキーボードを閉じる事ができます。
swift
1 func textFieldShouldReturn(_ textField: UITextField) -> Bool {
2
3
4 // キーボードを閉じる
5
6 textField.resignFirstResponder()
7
8 saveData(str: textField)
9
10 return true
11
12 }
リターンキーが押された時に入力されているテキストの内容をテキストフィールドごとに別々の変数に格納したいなら、例えば次のようにtextFieldの変数とそれぞれの格納先の変数が宣言されている仮定すれば
swift
1@IBOutlet var textField01 : UITextField!
2@IBOutlet var textField02 : UITextField!
3@IBOutlet var textField03 : UITextField!
4@IBOutlet var textField04 : UITextField!
5
6var text01 = ""
7var text02 = ""
8var text03 = ""
9var text04 = ""
次のように入力引数のtextFieldがどのテキストフィールドか判定して、それぞれのテキストフィールドに対応した変数にテキストの内容を格納すればいいです。
swift
1 func textFieldShouldReturn(_ textField: UITextField) -> Bool {
2
3
4 // キーボードを閉じる
5
6 textField.resignFirstResponder()
7
8 if textField == textField01 {
9 text01 = textField01.text!
10 } else if textField == textField02 {
11 text02 = textField02.text!
12 } else if textField == textField03 {
13 text03 = textField03.text!
14 } else if textField == textField04 {
15 text04 = textField04.text!
16 }
17 return true
18
19 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/28 13:58