Uitextfield resignfirstresponder não está funcionando?
-
27-09-2019 - |
Pergunta
Eu verifiquei duas vezes todas as conexões no arquivo NIB. Meu código -
// 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];
}
Eu usei uma subclasse de UIView (UIControl)
e adicionou todos os elementos da interface do usuário no construtor de interface. UIControl's touchDown
o método está conectado a backgroundTap
método.
-(IBAction) backgroundTap:(id) sender {
[loginTxt resignFirstResponder];
[pwdText resignFirstResponder];
//[[UIApplication sharedApplication] becomeFirstResponder];
//[sender resignFirstResponder];
}
Portanto, o teclado não é removido como deveria. Não sei por que.
Obrigado pela ajuda! Teja.
Solução
Dyingcactus apontou para o seu erro. Você está substituindo a versão da ponta do controle por um controle completamente diferente, perdendo o ponteiro para o da ponta. Quando Você ligar resignFirstResponder
, você está chamando isso no seu objeto duplicado, não naquele que está realmente na tela. Livre -se do alloc
e init
exige coisas conectadas na ponta.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow