若一個畫面中有多個輸入框, 當輸入完之後, 想要自動跳至下個輸入框,
就算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 { } 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 { }
return true } }
|