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.

Foi útil?

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
scroll top