Aggiungo un controller di visualizzazione come osservatore per la notifica UIKeyboardWillShowNotification
.L'osservatore non viene mai rimosso da NSNotificationCenter
Ho questo codice nel mio viewDidLoad
:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
E nella mia dealloc
:
[[NSNotificationCenter defaultCenter] removeObserver:self];
L'osservatore non viene rimosso anche se dealloc
viene chiamato quando il controller della vista è chiusa. Quindi, quando lo apro per la seconda volta, NSNotificationCenter proverà a notificare il vecchio oggetto, che viene rilasciato, e l'app si arresta in modo anomalo.
Ho visto diverse domande qui su StackOverflow riguardo a questo particolare problema, ma nessuna delle risposte funziona per me.
Ho provato a rimuovere l'osservatore in viewWillDisappear
e viewDidDisappear
ma si verifica lo stesso problema.
Sto usando ARC.
non usare "dealloc" con ARC –
@Vaibhav sbagliato. È perfettamente una buona pratica usare 'dealloc', non si può chiamare' [super dealloc] 'nell'implementazione –
mi trovo ad affrontare lo stesso problema che hai, ma non sono in grado di trovare la soluzione adeguata quindi, ho risolto questo problema problema di 'BOOL isFirstTime;', imposta SÌ quando 'keyboardWillShow' e - (void) keyboardDidHide { if (!isFirstTime) ritorno; , , , , , , isTxtFieldKeyBoard = NO; isFirstTime = NO; } – iPatel