2013-11-11 4 views
1

Я хочу зарегистрироваться на UIKeyboardDidHideNotification, который выдает только мой UIViewController., который выпускает мою UIKeyboardDidHideNotification?

Когда я делаю:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:self]; 

Я не получаю никаких звонков в keyboardDidHide: и когда я делаю:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil]; 

Я получаю звонки от всех других контроллера представления, а также мой собственный.

Как я могу зарегистрироваться на UIKeyboardDidHideNotification, поднятых только конкретным контроллером?

ответ

0

У вас нет возможности зарегистрировать UIKeyboardDidHideNotification, исходящую от определенного контроллера.

Если вы используете UIKeyboardWillHideNotification, вы можете проверить, является ли один из UITextView внутри вашего контроллера первым ответчиком.

Использование UIKeyboardDidHideNotification Я думаю, вам нужно использовать методы делегатов для всего вашего UITextView и сохранить последний, который был отредактирован. Я не думаю о другой альтернативе.

Иначе, если проблема заключается в выполнении метода, называемого UIKeyboardDidHideNotification, только на видимом контроллере, решение @ sviatoslav-yakymiv работает хорошо.

+0

так теоретически, если я определяю логическое значение для каждого контроллера вида что-то вроде didIssueKeyboardHideNotification и устанавливаю его в true после того, как я вызываю resignFirstResponder (или в моем случае setCancelsTouchesInView: YES) и проверяю, что это логическое значение в каждой клавиатуре .DideHide: реализация i должна быть способна знать, кто это. правильно ? –

+0

Да, это должно сработать. Не забудьте сбросить значение boolean на false в конце клавиатурыDidHide: – slecorne

+0

круто, я установил ваш ответ как правильный, потому что он указал мне в правильном направлении. –

0

Объект для UIKeyboardDidHideNotification всегда nil. Попробуйте добавить наблюдателя в viewWillAppear и удалить в viewDidDisapper методах.