2012-04-19 14 views
9

La mia tastiera appare con una vista testo, voglio nasconderla quando l'utente preme un pulsante indietro su una barra di navigazione.Come nascondere la tastiera dopo una pressione su un pulsante Indietro di UINavigationBar su ios

Ho provato questo:

-(void)viewWillDisappear:(BOOL)animated{ 

    [myTextView resignFirstResponder]; 
} 

e questo:

-(void)viewDidDisappear:(BOOL)animated{ 

    [myTextView resignFirstResponder]; 
} 

Ma non funziona, come posso fare questo?

edit:

ho trovato la soluzione qui:

iPad keyboard will not dismiss if modal ViewController presentation style is UIModalPresentationFormSheet

+0

assicurarsi IBOutlets sono binded correttamente e viewDid/WillDisappear sono chiamati mettendo dichiarazioni NSLog –

+0

Non si dovrebbe anche avere dimettersi dal primo soccorritore. Quando la vista si spegne dallo schermo, dovrebbe ridiventare automaticamente e far sparire la tastiera. È possibile verificare questo comportamento creando un nuovo progetto per l'iphone con il modello "Applicazione principale-dettaglio". Apri lo storyboard e vai alla schermata dei dettagli. Aggiungi un 'UITextField' alla vista ed esegui l'app. Quando tocchi il campo, appare la tastiera e quando premi il pulsante Indietro sulla barra di navigazione sparisce. – DBD

+0

È vero ma, ma il caso arriva quando premo un pulsante, un foglio di modulo modale appare con un UINavigationController, premo su un altro pulsante che naviga in un'altra vista, spingo in una textView, la tastiera appare, torno indietro la precedente viewController e il keybord sono ancora presenti. – Anthony

risposta

17

Mettere questo nel metodo ButtonPress -

[self.view.window endEditing:YES]; 

Modifica - questo permette anche di ottenere il contenuto del testo in corso di modifica quando viene premuto il pulsante "Indietro"

+0

per questo devi sovrascrivere la voce di sinistra del barbone di navigazione sinistra –

+0

Lo so - piuttosto dritto avanti allo – SomaMan

+0

funziona per me ... – iSwaroop

2

Combinando le risposte di cui sopra e il controllo per pulsante indietro sarà fatto da questo

- (void)viewWillDisappear:(BOOL)animated{ 
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { 
    // back button was pressed. We know this is true because self is no longer 
    // in the navigation stack. 
    [self.view.window endEditing:YES]; 
} 

[super viewWillDisappear:animated]; 

}

Problemi correlati