focusing a text field in swift
This works for me:
import UIKitclass ViewController:UIViewController, UITextFieldDelegate { @IBOutlet weak var fNameField: UITextField! @IBOutlet weak var sNameField: UITextField! @IBOutlet weak var emailField: UITextField! @IBOutlet weak var passwordField: UITextField! override func viewDidLoad() { super.viewDidLoad() fNameField.delegate = self sNameField.delegate = self emailField.delegate = self passwordField.delegate = self } func isValidEmail (test:String) ->Bool{ // your email validation here... return true } func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() if (textField == self.fNameField) { self.sNameField.becomeFirstResponder() } else if (textField == self.sNameField) { self.emailField.becomeFirstResponder() } else if (textField == self.emailField) { self.passwordField.becomeFirstResponder() } else{ var thereWereErrors = checkForErrors() if !thereWereErrors { //conditionally segue to next screen } } return true } func checkForErrors() -> Bool { var errors = false let title = "Error" var message = "" if fNameField.text.isEmpty { errors = true message += "First name empty" alertWithTitle(title, message: message, ViewController: self, toFocus:self.fNameField) } else if sNameField.text.isEmpty { errors = true message += "Surname empty" alertWithTitle(title, message: message, ViewController: self, toFocus:self.sNameField) self.sNameField.becomeFirstResponder() } else if emailField.text.isEmpty { errors = true message += "Email empty" alertWithTitle(title, message: message, ViewController: self, toFocus:self.emailField) } else if !isValidEmail(emailField.text) { errors = true message += "Invalid Email Address" alertWithTitle(title, message: message, ViewController: self, toFocus:self.emailField) } else if passwordField.text.isEmpty { errors = true message += "Password empty" alertWithTitle(title, message: message, ViewController: self, toFocus:passwordField) } else if count(passwordField.text.utf16)<8 { errors = true message += "Password must be at least 8 characters" alertWithTitle(title, message: message, ViewController: self, toFocus:self.passwordField) } return errors } func alertWithTitle(title: String!, message: String, ViewController: UIViewController, toFocus:UITextField) { let alert = UIAlertController(title: title, message: message, preferredStyle: .Alert) let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Cancel,handler: {_ in toFocus.becomeFirstResponder() }); alert.addAction(action) ViewController.presentViewController(alert, animated: true, completion:nil) }}