Вопрос

Все примеры настройки уведомлений, которые я могу найти, выглядят следующим образом:

[nc addObserver:self selector:@selector(keyboardWillShow:) имя:Объект UIKeyboardWillShowNotification: ноль];

где объект всегда устанавливается на ноль.объектом является NotificationSender, который определен в документации следующим образом:

«Объект, уведомления которого наблюдатель хочет получать;то есть наблюдателю доставляются только уведомления, отправленные этим отправителем.Если значение равно нулю, центр уведомлений не использует отправителя уведомления, чтобы решить, доставлять ли его наблюдателю».

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

Какие-либо предложения?

Это было полезно?

Решение

А UIKeyboardWillShowNotification исходит из вашего экземпляра окна и по сути является «системным» уведомлением.Клавиатура либо отображается, либо не отображается, на самом деле она не привязана к конкретному элементу управления.

Если вы хотите что-то сделать, когда пользователь вводит определенное текстовое поле, вам, вероятно, следует вместо этого контролировать это в делегате текстового поля.

Другие советы

В этом случае вы не можете получить уведомление только для одного конкретного текстового представления, поскольку в документе UIKeyboardWillShowNotification указано: «Объект уведомления равен нулю».

Вам необходимо проверить в своей клавиатуреWillShow impl, является ли ваше конкретное текстовое представление FirstResponder.

У меня было две конкурирующие потребности: мне пришлось использовать уведомление о клавиатуре, потому что мне нужно было получить высоту клавиатуры, которая, по-видимому, доступна только таким образом, но мне также нужно было знать, в каком текстовом представлении я находился, что означало также использование textViewDidBeginEditing. делегат.После долгих возни я, наконец, прибегнул к получению высоты клавиатуры в методе уведомления и сохранению ее в переменной экземпляра, которую затем можно было использовать в методе делегата (мне нужно прокрутить представление вверх, чтобы нижнее текстовое представление не было в основном спрятаны под клавиатурой, когда они начинают печатать).Немного неэлегантно, но это работает.

Спасибо за указатели!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top