Réponses:
Vous devez d'abord vous conformer au UITextFieldDelegate
protocole dans le fichier d'en-tête de votre View / ViewController comme ceci:
@interface YourViewController : UIViewController <UITextFieldDelegate>
Ensuite, dans votre fichier .m, vous devez implémenter la UITextFieldDelegate
méthode de protocole suivante :
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
[textField resignFirstResponder];
s'assure que le clavier est désactivé.
Assurez-vous que vous définissez votre view / viewcontroller pour être le délégué de UITextField après avoir initialisé le champ de texte dans le .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
Implémentez la méthode UITextFieldDelegate comme ceci:
- (BOOL)textFieldShouldReturn:(UITextField *)aTextField
{
[aTextField resignFirstResponder];
return YES;
}
Voir Gestion du clavier pour une discussion complète sur ce sujet.
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 ...
Cela m'a pris quelques essais, a eu le même problème, cela a fonctionné pour moi:
Vérifiez votre orthographe sur -
(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
J'ai corrigé le mien au textField
lieu de textfield
, mettre "F" en majuscule ... et bingo !! ça a marché..
Lorsque vous appuyez sur la touche retour, appelez:
[uitextfield resignFirstResponder];
Après pas mal de temps à chercher quelque chose qui a du sens, c'est ce que j'ai mis en place et cela a fonctionné comme un charme.
.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!
Définissez le délégué de l'UITextField sur votre ViewController, ajoutez une prise de référence entre le propriétaire du fichier et l'UITextField, puis implémentez cette méthode:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == yourTextField)
{
[textField resignFirstResponder];
}
return NO;
}
Ajoutez ceci au lieu de la classe prédéfinie
class ViewController: UIViewController, UITextFieldDelegate {
Pour retirer le clavier lorsque vous cliquez en dehors du clavier
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
et pour retirer le clavier lorsque vous appuyez sur Entrée
ajouter cette ligne dans viewDidLoad ()
inputField est le nom du textField utilisé.
self.inputField.delegate = self
et ajoutez cette fonction
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Swift 2:
c'est ce qu'on fait pour tout faire!
fermez le clavier avec le Done
bouton ou Touch outSide
, Next
pour passer à l'entrée suivante.
Premier changement TextFiled Return Key
Pour Next
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)
}
en swift, vous devez déléguer UITextfieldDelegate , son important ne l'oubliez pas, dans le viewController, comme:
class MyViewController: UITextfieldDelegate{
mytextfield.delegate = self
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
}
}
Vous pouvez ajouter une IBAction à uiTextField (l'événement de releation est "Did End On Exit"), et l'IBAction peut être nommée hideKeyboard,
-(IBAction)hideKeyboard:(id)sender
{
[uitextfield resignFirstResponder];
}
vous pouvez également l'appliquer aux autres textFields ou boutons, par exemple, vous pouvez ajouter un bouton masqué à la vue, lorsque vous cliquez dessus pour masquer le clavier.
Vous pouvez essayer cette sous-classe UITextfield dans laquelle vous pouvez définir une condition pour que le texte modifie dynamiquement l'UIReturnKey:
https://github.com/codeinteractiveapps/OBReturnKeyTextField