En cliquant dans un champ de texte, le clavier apparaît ... .. Comment puis-je le masquer lorsque l'utilisateur appuie sur la touche Retour?
Commencez par déléguer votre fichier pour UITextField
@interface MYLoginViewController () <UITextFieldDelegate>
@end
Ajoutez ensuite cette méthode à votre code.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Ajoutez également self.textField.delegate = self;
Dans viewDidLoad
déclarez:
[yourTextField setDelegate:self];
Ensuite, incluez le remplacement de la méthode delegate:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
Dans Swift faire comme ceci:
En premier dans votre ViewController
, implémentez cette UITextFieldDelegate
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
Ajoutez maintenant un délégué à une TextField
dans laquelle vous voulez fermer le clavier lorsque vous appuyez sur return, soit dans la méthode viewDidLoad
comme ci-dessous, soit à l'endroit où vous l'initialisez .
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
Maintenant, ajoutez cette méthode.
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Essayez ceci dans Swift ,
Étape 1: Définissez le délégué comme étant autonome pour votre textField
textField.delegate = self
Étape 2: Ajoutez ce UITextFieldDelegate sous votre déclaration de classe,
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
Définissez le délégué de UITextField
dans le contrôleur de vue, field.delegate = self
, puis:
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}
Vous pouvez connecter "Primary Action Triggered" (clic droit sur UITextField) à un IBAction et vous pouvez démissionner du premier répondant (sans délégation). Exemple .__ (Swift 4):
@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
sender.resignFirstResponder()
...
}
set delegate of UITextField
, et la méthode textFieldShouldReturn
au-dessus, dans cette méthode, écrit simplement les deux lignes suivantes:
[textField resignFirstResponder];
return YES;
c'est tout. Avant d'écrire un code, n'oubliez pas de définir le délégué d'une UITextField
et de définir le type de clé de retour sur "Terminé" dans la fenêtre des propriétés (commande + touche majuscule + I).
Essaye ça,
[textField setDelegate: self];
Ensuite, dans la méthode déléguée textField
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Ok, je pense que pour un novice, les choses pourraient être un peu déroutantes. Je pense que la bonne réponse est un mélange de tout ce qui précède, du moins dans Swift4.
Créez une extension ou utilisez le ViewController dans lequel vous souhaitez l’utiliser, mais assurez-vous d’implémenter UITextFieldDelegate. Par souci de réutilisabilité, j'ai trouvé plus facile d'utiliser une extension:
extension UIViewController : UITextFieldDelegate {
...
}
mais l'alternative fonctionne aussi:
class MyViewController: UIViewController {
...
}
Ajoutez la méthode textFieldShouldReturn (selon votre option précédente, soit dans l'extension, soit dans votre ViewController).
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
Dans votre méthode viewDidLoad, définissez le délégué du champ de texte sur self
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
Cela devrait être tout. Maintenant, lorsque vous appuyez sur return
, la textFieldShouldReturn
doit être appelée.
[textField resignFirstResponder];
Utilisez ceci
Définissez cette classe, puis définissez votre champ de texte pour utiliser la classe, ce qui automatise l'ensemble du clavier masqué lorsque vous appuyez automatiquement sur la touche Entrée.
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
Ensuite, tout ce que vous devez faire dans le storyboard est de définir les champs pour utiliser la classe: