Cliquer dans un champ de texte fait apparaître le clavier. Comment le masquer lorsque l'utilisateur appuie sur la touche retour?
Cliquer dans un champ de texte fait apparaître le clavier. Comment le masquer lorsque l'utilisateur appuie sur la touche retour?
Réponses:
Commencez par créer votre fichier délégué 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éclarer:
[yourTextField setDelegate:self];
Ensuite, incluez le remplacement de la méthode déléguée:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
rappel. J'avais définitivement oublié et le code ne fonctionnait pas auparavant.
Essayez ceci dans Swift ,
Étape 1: définir le délégué comme vous-même à votretextField
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
}
}
En swift, faites comme ceci:
D'abord dans votre ViewController
implémentation, UITextFieldDelegate
par exemple.
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
Ajoutez maintenant un délégué à un TextField
dans lequel vous souhaitez ignorer le clavier lorsque le retour est tapé dans la viewDidLoad
méthode comme ci-dessous ou à l'endroit où vous l'initialisez. Pour par exemple.
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
Maintenant, ajoutez cette méthode.
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Essaye ça,
[textField setDelegate: self];
Ensuite, dans la méthode déléguée textField
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
set delegate of UITextField
, and over ride, textFieldShouldReturn
method, dans cette méthode, écrivez 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é de a UITextField
et de définir le type de touche Retour sur "Terminé" dans la fenêtre des propriétés (commande + Maj + I).
Vous pouvez connecter "Primary Action Triggered" (clic droit sur UITextField) avec un IBAction et vous pouvez démissionner du premier répondeur (sans délégation). Exemple (Swift 4):
@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
sender.resignFirstResponder()
...
}
Définissez le délégué du UITextField
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)
}
}
Si vous souhaitez masquer le clavier pour une utilisation particulière du clavier
[self.view resignFirstResponder];
Si vous souhaitez masquer un clavier de la vue, utilisez[self.view endEditing:true];
Ok, je pense que pour un novice, les choses peuvent ê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. Pour des raisons de réutilisation, 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 (en fonction de votre option précédente, soit dans l'extension ou 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
le textFieldShouldReturn
devrait être appelé.
Définissez cette classe, puis définissez votre champ de texte pour utiliser la classe et cela automatise tout le clavier de masquage lorsque le retour est appuyé automatiquement.
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 avez à faire dans le storyboard est de définir les champs pour utiliser la classe: