J'ai créé un UITextField
programme faisant de la UITextField
propriété a du viewController. J'ai besoin de fermer le clavier avec le retour et le toucher sur l'écran. J'ai pu obtenir l'écran tactile pour ignorer, mais appuyer sur retour ne fonctionne pas.
J'ai vu comment le faire avec des storyboards et en allouant et en initialisant l' UITextField
objet directement sans le créer en tant que propriété. Possible de 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
ios
keyboard
uitextfield
noobsmcgoobs
la source
la source
Réponses:
Le moyen simple est de connecter le délégué de
UITextField
à self (self.mytestField.delegate = self
) et de supprimer le clavier dans la méthode entextFieldShouldReturn
utilisant[textField resignFirstResponder];
Une autre façon de supprimer le clavier est la suivante:
Placez
[self.view endEditing:YES];
là où vous souhaitez fermer le clavier (événement Button, événement Touch, etc.).la source
Ajoutez une méthode déléguée
UITextField
comme celle-ci:Et définissez votre
textField.delegate = self;
puis ajoutez également deux méthodes déléguées deUITextField
la source
@interface MyController : UIViewController <UITextFieldDelegate>
// Masquer le keyBoard en touchant l'arrière-plan dans la vue
la source
utilisez simplement ceci dans swift pour ignorer le clavier:
Swift 3
la source
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
SWIFT 4:
ou
Définissez le délégué du champ de texte sur le contrôleur de vue actuel, puis:
Objectif c:
ou
Définissez le délégué du champ de texte sur le contrôleur de vue actuel, puis:
la source
Dans le délégué d'application, vous pouvez écrire
utilisez de cette façon, vous ne pouvez pas écrire trop de code.
la source
Essayez de vous faire une idée de ce qu'est un premier répondeur dans la hiérarchie des vues iOS. Lorsque votre champ de texte devient actif (ou premier répondeur) lorsque vous le touchez (ou lui passez le message par
becomeFirstResponder
programme), il présente le clavier. Donc, pour supprimer votre champ de texte du premier répondeur, vous devez lui transmettre le messageresignFirstResponder
.Et pour masquer le clavier sur son bouton de retour, vous devez implémenter sa méthode déléguée
textFieldShouldReturn:
et transmettre leresignFirstResponder
message.la source
Voici ce que j'utilise dans mon code. Il fonctionne comme un charme!
Dans yourviewcontroller.h ajoutez:
@property (nonatomic) UITapGestureRecognizer *tapRecognizer;
Maintenant, dans le fichier .m, ajoutez ceci à votre fonction ViewDidLoad:
Ajoutez également cette fonction dans le fichier .m:
la source
Pour ignorer un clavier après que le clavier est apparu, il y a 2 cas ,
lorsque le UITextField est à l' intérieur d'un UIScrollView
lorsque le UITextField est en dehors d'un UIScrollView
2.Lorsque UITextField est en dehors d'un UIScrollView, remplacez la méthode dans votre sous-classe UIViewController
vous devez également ajouter un délégué pour tous les UITextView
pour créer une IBAction, appuyez sur ctrl + cliquez sur UITapGesture et faites-le glisser vers le fichier .h de viewcontroller.
Ici, j'ai nommé tappedEvent comme nom d'action
les informations ci-dessus fournies proviennent du lien suivant, veuillez vous référer pour plus d'informations ou contactez-moi si vous ne comprenez pas les données ci-dessus.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
la source
Pour un groupe de
UITextView
s à l'intérieur d'unViewController
:Swift 3.0
Objectif c
la source
Je sais que d'autres ont répondu à cette question, mais j'ai trouvé un autre article qui couvrait également aucun événement d'arrière-plan - tableview ou scrollview.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
la source
Étant donné que les balises indiquent uniquement qu'iOS je publierai la réponse pour Swift 1.2 et iOs 8.4, ajoutez-les dans la classe swift de votre contrôleur de vue:
N'oubliez pas non plus d'ajouter UITextFieldDelegate dans la déclaration de classe et de définir votre délégué de champs de texte sur self (la vue).
la source
DANS Swift 3
OU
la source
Voici donc ce que j'ai fait pour le faire disparaître après avoir touché l'arrière-plan ou le retour. J'ai dû ajouter le delegate = self dans viewDidLoad, puis aussi les méthodes de délégué plus tard dans les fichiers .m.
la source
Utilisez simplement ceci dans Objective-C pour ignorer le clavier:
la source
Vous devez d'abord ajouter un delegete de champ de texte dans le fichier .h. sinon, déclarez que
(BOOL)textFieldShouldReturn:(UITextField *)textField
cette méthode n'a pas été appelée, alors ajoutez d'abord un délégué et écrivez le code de masquage du clavier dans cette méthode.essaye celui-là..
la source
Ajouter un délégué: UITextFieldDelegate
puis ajoutez cette méthode de délégué
// Cela devrait fonctionner parfaitement
la source
lorsque vous utilisez plus d'un champ de texte à l'écran Avec cette méthode, vous n'avez pas besoin de mentionner le champ de texte à chaque fois, comme
la source
Swift 2:
c'est ce qu'on fait pour tout faire!
fermez le clavier avec le
Done
bouton ouTouch outSide
,Next
pour passer à l'entrée suivante.Premier changement TextFiled
Return Key
PourNext
Storyboard.la source
Si vous ne connaissez pas le contrôleur de vue actuel ou la vue de texte, vous pouvez utiliser la chaîne de répondeurs:
la source
pour swift 3-4 je fixe comme
il suffit de copier-coller n'importe où sur la classe. Cette solution fonctionne simplement si vous voulez que tous les UItextfield fonctionnent de la même manière, ou si vous n'en avez qu'un!
la source