iOS - 跳至下個輸入框

若一個畫面中有多個輸入框, 當輸入完之後, 想要自動跳至下個輸入框,

就算Storyboard中設置為Next, 依舊是無法自動跳轉的, 此時需要使用程式來控制.

Step 1: Reference TextFields and 註冊UITextFieldDelegate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import UIKit

class ViewController: UIViewController {
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var bdField: UITextField!
@IBOutlet weak var heightField: UITextField!
@IBOutlet weak var weightField: UITextField!
@IBOutlet weak var idField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
nameField.delegate = self;
bdField.delegate = self;
heightField.delegate = self;
weightField.delegate = self;
idField.delegate = self;
}
}

Step 2: 監聽Return Key

1
2
3
4
5
extension ViewController : UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
return true
}
}

Step 3: 跳轉控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
extension ViewController : UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == self.nameField {
self.bdField.becomeFirstResponder()
} else if textField == self.bdField {
self.heightField.becomeFirstResponder()
} else if textField == self.heightField {
self.weightField.becomeFirstResponder()
} else if textField == self.weightField {
self.idField.becomeFirstResponder()
} else {
//nothing else
}
return true
}
}

Source Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import UIKit

class ViewController: UIViewController {
@IBOutlet weak var nameField: UITextField!
@IBOutlet weak var bdField: UITextField!
@IBOutlet weak var heightField: UITextField!
@IBOutlet weak var weightField: UITextField!
@IBOutlet weak var idField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
nameField.delegate = self;
bdField.delegate = self;
heightField.delegate = self;
weightField.delegate = self;
idField.delegate = self;
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

extension ViewController : UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == self.nameField {
self.bdField.becomeFirstResponder()
} else if textField == self.bdField {
self.heightField.becomeFirstResponder()
} else if textField == self.heightField {
self.weightField.becomeFirstResponder()
} else if textField == self.weightField {
self.idField.becomeFirstResponder()
} else {
//nothing else
}

return true
}
}
作者

Nick Lin

發表於

2016-10-13

更新於

2023-01-18

許可協議


評論