Comment faire pour faire disparaître le clavier iOS par programme lorsque vous appuyez sur retour
J'ai créé un UITextField
par programmation faisant la UITextField
une propriété de la viewController. J'ai besoin de fermer le clavier avec le retour et le toucher sur l'écran. J'ai été en mesure d'obtenir l'écran tactile à rejeter, mais en appuyant sur la touche retour ne fonctionne pas.
J'ai vu comment le faire avec des story-boards et par la répartition et l'initialisation de la UITextField
objet directement sans créer comme une propriété. Possible de le faire?
.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
@property (strong, atomic) UITextField *username;
@end
.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor blueColor];
self.username = [[UITextField alloc] initWithFrame:CGRectMake(100, 25, 80, 20)];
self.username.placeholder = @"Enter your username";
self.username.backgroundColor = [UIColor whiteColor];
self.username.borderStyle = UITextBorderStyleRoundedRect;
if (self.username.placeholder != nil) {
self.username.clearsOnBeginEditing = NO;
}
_username.delegate = self;
[self.view addSubview:self.username];
[_username resignFirstResponder];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesBegan:withEvent:");
[self.view endEditing:YES];
[super touchesBegan:touches withEvent:event];
}
@end
Vous devez vous connecter pour publier un commentaire.
La manière la plus simple est de connecter le délégué de
UITextField
de soi (self.mytestField.delegate = self
) et fermer le clavier dans la méthodetextFieldShouldReturn
à l'aide de[textField resignFirstResponder];
Une autre façon de fermer le clavier est la suivante:
Mettre
[self.view endEditing:YES];
où vous souhaitez fermer le clavier (Bouton d'événement, d'événement Tactile, etc.).Ajouter un délégué de la méthode de
UITextField
comme ceci:Et de définir votre
textField.delegate = self;
puis aussi ajouter deux délégué méthodes deUITextField
@interface MyController : UIViewController <UITextFieldDelegate>
//Cacher le clavier en touchant le fond dans la vue
simplement d'utiliser ce prompt à rejeter clavier:
Swift 3
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
SWIFT 4:
ou
Ensemble du champ de texte délégué à courant viewcontroller et puis:
Objective-C:
ou
Ensemble du champ de texte délégué à courant viewcontroller et puis:
Dans la Délégué d'Application, vous pouvez écrire
utiliser de cette façon, vous pouvez ne pas écrire trop de code.
Essayez d'obtenir une idée de ce qu'intervenant de première ligne est en iOS afficher la hiérarchie. Lorsque votre textfield devient actif(ou first responder) lorsque vous touchez à l'intérieur (ou la passer le messasge
becomeFirstResponder
par programmation), il présente le clavier. Afin de retirer votre textfield d'être le premier intervenant, vous devez passer le messageresignFirstResponder
vers celui-là.Et pour masquer le clavier sur son bouton de retour, vous devez mettre en œuvre sa méthode du délégué
textFieldShouldReturn:
et passer leresignFirstResponder
message.Voici ce que j'utilise dans mon code. Il fonctionne comme un charme!
Dans yourviewcontroller.h ajouter:
@property (nonatomic) UITapGestureRecognizer *tapRecognizer;
Maintenant dans la .m fichier, ajoutez ceci à votre ViewDidLoad fonction:
Aussi, d'ajouter cette fonction dans les .m fichier:
De rejeter un clavier une fois que le clavier a surgi, il y a 2 cas,
lorsque l'objet UITextField est à l'intérieur d'un UIScrollView
lorsque l'objet UITextField est à l'extérieur d'un UIScrollView
2.lorsque l'objet UITextField est à l'extérieur d'un UIScrollView
remplacer la méthode dans votre sous-classe UIViewController
vous devez également ajouter délégué UITextView
Faites glisser et déposez un UITapGesture pour le défilement de la vue et créer une IBAction pour elle.
pour créer une IBAction, appuyez sur ctrl+ cliquez sur le UITapGesture et faites-le glisser vers l' .h fichier viewcontroller.
Ici, j'ai nommé tappedEvent que mon nom d'action
la abouve donné l'Information a été dérivée à partir du lien suivant, merci de vous référer pour plus d'informations ou contactez-moi si vous ne comprenez pas le abouve de données.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
Pour un groupe de
UITextView
s à l'intérieur d'unViewController
:Swift 3.0
Objective-C
Je sais que cette réponse a été donnée par d'autres, mais j'ai trouvé un autre article qui sont également couverts par aucun événement d'arrière-plan - tableview ou le scrollview.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
Depuis les balises seulement dire iOS, je vais poster la réponse pour Swift 1.2 et iOs 8.4, ajoutez-les à votre vue-contrôleur swift classe:
Aussi, n'oubliez pas d'ajouter UITextFieldDelegate dans la déclaration de classe et de définir vos champs de texte délégué à l'autonomie (la vue).
DANS Swift 3
OU
Vous devez d'abord ajouter textfield delegete dans .h fichier. si pas déclarer
(BOOL)textFieldShouldReturn:(UITextField *)textField
cette méthode n'est pas appelée.alors d'abord ajouter le délégué et écrire clavier cacher du code dans la méthode.essayer celui-ci..
Voici donc ce que j'ai fait pour la faire rejeter après avoir touché l'arrière-plan ou de retour. J'ai dû ajouter le délégué = auto dans le viewDidLoad et puis aussi le délégué méthodes tard dans la .m fichiers.
Simplement utiliser ce en Objective-C pour rejeter clavier:
Ajouter Délégué : UITextFieldDelegate
puis ajoutez cette méthode du délégué
//Cela devrait fonctionner parfaitement
lorsque vous utilisez plus d'une case à l'écran
Avec cette méthode, vous ne devez pas mentionner textfield à chaque fois comme
Swift 2 :
c'est ce qui est fait pour tout faire !
fermer le clavier avec
Done
bouton ouTouch outSide
,Next
pour aller à l'entrée suivante.Premier Changement TextFiled
Return Key
ÀNext
dans le StoryBoard.Si vous ne savez pas vue actuelle du contrôleur ou de la textview vous pouvez utiliser le Répondeur de la Chaîne:
pour swift 3-4 j'ai fixé comme
il suffit de copier coller n'importe où sur la classe. Cette solution de travail si vous voulez que tous les UItextfield travail comme même, ou si vous avez juste un!