web-dev-qa-db-fra.com

Swift TextFieldShouldReturn Return Tap Tap

(iOS8, Xcode6, Swift) À l’aide de Swift, comment capturer un robinet en appuyant sur le bouton "Retour"?

Le document au lien suivant spécifie l'utilisation de la méthode textFieldShouldReturn:

// Swift
@optional func textFieldShouldReturn(_ textField: UITextField!) -> Bool

Je suis suspendu dans la partie "_ textField". J'ai créé le champ de texte à l'aide de Storyboard. Comment capturer des notifications pour ce champ de texte spécifique? Dois-je créer une nouvelle classe et la définir en tant que délégué pour ce champ de texte? Est-ce que j'attribue un nom au texte classé, puis m'y attache?

https://developer.Apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn

41
kmiklas
class ViewController: UIViewController,UITextFieldDelegate //set delegate to class

@IBOutlet var txtValue: UITextField //create a textfile variable

override func viewDidLoad() {
   super.viewDidLoad() 
   txtValue.delegate = self //set delegate to textfile 
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
   textField.resignFirstResponder()
   return true
}
84
jayesh kavathiya

Implémenter cette fonction

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
   textField.resignFirstResponder()
   return true
}

Et pour délégué, vous pouvez définir en utilisant le panneau Utilitaires/Inspecteur de connexions/délégué puis faites glisser le curseur vers ViewController (bouton jaune dans le storyboard)

Ensuite, vous n'avez pas besoin de définir le délégué par programme pour chaque champ de texte

21
sijones

Vous devez définir un objet en tant que délégué du champ de texte. Il s'agit généralement du contrôleur de vue dans lequel se trouve le champ de texte. Vous n'avez pas besoin d'hériter d'une autre classe ni d'implémenter à proprement parler un délégué (mais vous pouvez implémenter UITextFieldDelegate pour éclaircir un peu les choses.)

3
Ben Gottlieb

Dans Swift 4.2 et Xcode 10.1

//UITextField delegate method
func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    if textField == TF1 {
        textField.resignFirstResponder()//
        TF2.becomeFirstResponder()//TF2 will respond immediately after TF1 resign.
    } else if textField == TF2  {
        textField.resignFirstResponder()
        TF3.becomeFirstResponder()//TF3 will respond first
    } else if textField == TF3 {
        textField.resignFirstResponder()
    }
    return true
}
0
iOS