Я работаю над своими встроенными табличными представлениями. Они должны прокручиваться, когда клавиатура скрывает некоторые текстовые поля. Но у меня есть несколько контроллеров представлений в моем контроллере просмотра навигации с таким поведением. До сих пор мой регистрационный код и код отмены регистрации является:iOS: Нужно ли мне отменить регистрацию в контроллере навигации с клавиатуры при каждом исчезновении представления?
- (void)viewDidLoad
{
[super viewDidLoad];
[self registerForKeyboardNotifications];
}
// Call this method somewhere in your view controller setup code.
- (void)registerForKeyboardNotifications
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
Но если я показываю клавиатуру в, скажем, номер вид контроллер 3 в моей навигации контроллера, метод keyboardWasShown называется три раза. Разве это не важно или мне нужно отменить регистрацию каждый раз, когда viewWillDisappear?
Хорошо, и это не проблема с производительностью или что-то еще? Извините, но все же новичок в iOS :-) – MichiZH
Я обновил свой ответ. Я бы позволил контроллеру nav обрабатывать уведомления. Регистрация и отмена регистрации в каждом контроллере представления может очень сильно повлиять на производительность ... но не столько, сколько наличие нескольких контроллеров представления, которые реагируют на уведомление, когда требуется только один из них. – nhgrif
Хм, я действительно не понимаю, как бы это сделать в контроллере навигации? Я имею в виду, что я знаю подклассы и все, но как бы вы назвали этот метод тогда или как бы вы его программировали? – MichiZH