UITextField resignFirstResponder ne fonctionne pas?
-
27-09-2019 - |
Question
Je l'ai vérifié deux fois toutes les connexions dans le fichier nib. Mon code -
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"iphone_bg_login.png"]];
self.title = @"Login screen";
loginTxt = [[UITextField alloc] init];
pwdText = [[UITextField alloc] init];
loginFailedTxt = [[UILabel alloc] init];
loginBtn = [[UIButton alloc] init];
navAppDelegate = (NavAppDelegate *)[[UIApplication sharedApplication] delegate];
navAppDelegate.navController.navigationBarHidden = YES;
//NSArray *subVs = (NSArray *) [self.view subviews];
[super viewDidLoad];
}
I ai utilisé une sous-classe de UIView (UIControl)
et ajouté tous les éléments de l'interface utilisateur à elle dans le procédé d'interface builder.The de UIControl's touchDown
est reliée à la méthode de backgroundTap
.
-(IBAction) backgroundTap:(id) sender {
[loginTxt resignFirstResponder];
[pwdText resignFirstResponder];
//[[UIApplication sharedApplication] becomeFirstResponder];
//[sender resignFirstResponder];
}
Ainsi, le clavier n'est pas supprimé comme il est censé. Je ne sais pas pourquoi.
Merci pour l'aide! Teja.
La solution
DyingCactus a souligné votre erreur. Vous remplacez la BNI-version du contrôle avec un contrôle complètement différent, perdre votre pointeur sur celui de la NIB. Lorsque vous appelez resignFirstResponder
, vous appelez sur votre objet en double, pas celui qui est en fait à l'écran. Débarrassez-vous des appels alloc
et init
pour des choses par câble dans les NIB.