Уведомления клавиатуры и presentModalViewController - PullRequest
1 голос
/ 03 марта 2011

Я получаю дважды уведомление о том, что клавиатура нажата, и один раз - о том, что клавиатура вверх ...

В моем классе я поставил уведомления для клавиатуры:

-(id)init… {
…
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
…
}

для настройки кадра на слайде клавиатуры.

Позже во время урока я использую 'ABPeoplePickerNavigationController', чтобы выбрать адрес.

…
ABPeoplePickerNavigationController *userPicker=[[ABPeoplePickerNavigationController alloc] init];
…
[viewController presentModalViewController:userPicker animated:YES];
…

Я обнаружил, что на ‘presentModalViewController’ я получаю дважды ‘UIKeyboardWillHideNotification’, НО один раз ‘UIKeyboardWillShowNotification’ - когда сборщик уходит.

Довольно странно.

Я пытался удалить наблюдателя для ‘UIKeyboardWillHideNotification’ из инициализации класса (чтобы найти любые двойные объявления наблюдателя). Однако после этого вообще не удаляйте ‘UIKeyboardWillHideNotification’ уведомлений.

Почему я получаю различное количество уведомлений на клавиатуре вверх и вниз?

Может я что-то не так делаю?

Спасибо.

1 Ответ

1 голос
/ 04 марта 2011

Довольно часто (особенно с сообщением * WillDoSomething) получать уведомление дважды, хотя вы ожидали только один раз.Что бы вы могли сделать, чтобы решить эту проблему, это иметь где-то логическое значение, которое хранит состояние пользовательского интерфейса.Например, если клавиатура имеет значение false, это означает, что пользовательский интерфейс уже переведен в состояние по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...