Я добавляю контроллер представления в качестве наблюдателя для уведомления UIKeyboardWillShowNotification
.
У меня есть этот код в моем viewDidLoad
:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
И в моем dealloc
:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Наблюдатель не удаляется, хотя dealloc
вызывается при закрытии контроллера представления. Поэтому, когда я открою его во второй раз, NSNotificationCenter попытается уведомить старый объект, который освобождается, и приложение вылетает.
Я видел несколько вопросов здесь, в StackOverflow, об этой конкретной проблеме, но ни один из ответов не работает для меня.
Я пытался удалить наблюдателя в viewWillDisappear
и viewDidDisappear
, но возникает та же проблема.
Я использую АРК.
dealloc
— это хорошая практика, вы просто не можете вызывать[super dealloc]
в реализации. - person Gabriele Petronella   schedule 23.08.2013BOOL isFirstTime;
, установил YES, когдаkeyboardWillShow
и - (void)keyboardDidHide { if(!isFirstTime) return; , , , , , , isTxtFieldKeyBoard = NO; isFirstTime = НЕТ; } - person iPatel   schedule 23.08.2013