web-dev-qa-db-fra.com

Comment faire en sorte que la touche retour sur l'iPhone fasse disparaître le clavier?

J'ai deux UITextFields (nom d'utilisateur et mot de passe, par exemple), mais je ne parviens pas à supprimer le clavier lorsque j'appuie sur la touche Retour du clavier. Comment puis-je faire ceci?

108
K.Honda

Tout d’abord, vous devez vous conformer au protocole UITextFieldDelegate de votre fichier d’en-tête View/ViewController comme ceci:

@interface YourViewController : UIViewController <UITextFieldDelegate>

Ensuite, dans votre fichier .m, vous devez implémenter la méthode de protocole UITextFieldDelegate suivante:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];

    return YES;
}

[textField resignFirstResponder]; s'assure que le clavier est désactivé.

Assurez-vous de bien définir votre contrôleur de vue/view en tant que délégué de UITextField après avoir initialisé le champ de texte dans le fichier .m:

yourTextField = [[UITextField alloc] initWithFrame:yourFrame];
//....
//....
//Setting the textField's properties
//....    
//The next line is important!!
yourTextField.delegate = self; //self references the viewcontroller or view your textField is on
241
Sid

Implémentez la méthode UITextFieldDelegate comme ceci:

- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
    [aTextField resignFirstResponder];
    return YES;
}
19
Nick Weaver

Voir Gestion du clavier pour une discussion complète sur ce sujet.

8
Caleb

Vos UITextFields doivent avoir un objet délégué (UITextFieldDelegate). Utilisez le code suivant dans votre délégué pour faire disparaître le clavier:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
}

Devrait fonctionner jusqu'à présent ...

6
cschwarz

Pris moi quelques essais, même problème, cela a fonctionné pour moi:

Vérifiez votre orthographe à -

(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];

J'ai corrigé le mien à textField au lieu de textfield, capitaliser "F" ... et bingo !! ça a marché..

6
Ema

Lorsque vous appuyez sur la touche Retour, appelez:

[uitextfield resignFirstResponder];
4
Conor Taylor

Ajouter ceci à la place de la classe prédéfinie

class ViewController: UIViewController, UITextFieldDelegate {

Pour supprimer le clavier lorsque l'utilisateur clique dessus

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)
    }

et pour enlever le clavier quand on appuie dessus

ajouter cette ligne dans viewDidLoad ()

inputField est le nom du textField utilisé.

self.inputField.delegate = self

et ajouter cette fonction

func textFieldShouldReturn(textField: UITextField) -> Bool {        
        textField.resignFirstResponder()        
        return true        
    }
3
Ali Kahoot

Définissez le délégué de UITextField sur votre ViewController, ajoutez une sortie de référence entre le propriétaire du fichier et le UITextField, puis implémentez cette méthode:

-(BOOL)textFieldShouldReturn:(UITextField *)textField 
{
   if (textField == yourTextField) 
   {
      [textField resignFirstResponder]; 
   }
   return NO;
}
3
Avinash651

Après avoir passé pas mal de temps à chercher quelque chose qui ait du sens, voici ce que j’ai mis en place et cela a fonctionné à merveille.

.h

//
//  ViewController.h
//  demoKeyboardScrolling
//
//  Created by Chris Cantley on 11/14/13.
//  Copyright (c) 2013 Chris Cantley. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITextFieldDelegate>

// Connect your text field to this the below property.
@property (weak, nonatomic) IBOutlet UITextField *theTextField;

@end

.m

//
//  ViewController.m
//  demoKeyboardScrolling
//
//  Created by Chris Cantley on 11/14/13.
//  Copyright (c) 2013 Chris Cantley. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController



- (void)viewDidLoad
{
    [super viewDidLoad];
    // _theTextField is the name of the parameter designated in the .h file. 
    _theTextField.returnKeyType = UIReturnKeyDone;
    [_theTextField setDelegate:self];

}

// This part is more dynamic as it closes the keyboard regardless of what text field 
// is being used when pressing return.  
// You might want to control every single text field separately but that isn't 
// what this code do.
-(void)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
}


@end

J'espère que cela t'aides!

3
user2904476

dans Swift vous devriez déléguer UITextfieldDelegate, il est important de ne pas l'oublier, dans le viewController, comme:

class MyViewController: UITextfieldDelegate{

     mytextfield.delegate = self

     func textFieldShouldReturn(textField: UITextField) -> Bool {
          textField.resignFirstResponder()
     }
}
2
Eduardo Oliveros

Swift 2:

c'est ce qui est fait pour tout faire!

fermez le clavier avec le bouton Done ou Touch outSide, Next pour passer à l’entrée suivante.

Premier changement TextFiled Return Key Pour Next dans StoryBoard.

override func viewDidLoad() {
  txtBillIdentifier.delegate = self
  txtBillIdentifier.tag = 1
  txtPayIdentifier.delegate  = self
  txtPayIdentifier.tag  = 2

  let tap = UITapGestureRecognizer(target: self, action: "onTouchGesture")
  self.view.addGestureRecognizer(tap)

}

func textFieldShouldReturn(textField: UITextField) -> Bool {
   if(textField.returnKeyType == UIReturnKeyType.Default) {
       if let next = textField.superview?.viewWithTag(textField.tag+1) as? UITextField {
           next.becomeFirstResponder()
           return false
       }
   }
   textField.resignFirstResponder()
   return false
}

func onTouchGesture(){
    self.view.endEditing(true)
}
2
Mojtabye

Si vous souhaitez faire disparaître le clavier lors de l'écriture dans les champs de texte du champ d'alerte

[[alertController.textFields objectAtIndex:1] resignFirstResponder];
1
DURGESH Chaurasiya

Vous pouvez ajouter un IBAction à uiTextField (l'événement de releation est "Did End On Exit"), et IBAction peut s'appeler hideKeyboard,

-(IBAction)hideKeyboard:(id)sender
{
    [uitextfield resignFirstResponder];
}

vous pouvez également l'appliquer aux autres champs textuels ou boutons, par exemple, vous pouvez ajouter un bouton caché à la vue lorsque vous cliquez dessus pour masquer le clavier.

0
慭慭流觞

Vous pouvez essayer cette sous-classe UITextfield dans laquelle vous pouvez définir une condition pour que le texte modifie dynamiquement la clé UIReturnKey:
https://github.com/codeinteractiveapps/OBReturnKeyTextField

0
CodeInteractive