Как указать уведомленияSender? (Какао Touch) - PullRequest
0 голосов
/ 03 апреля 2009

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

[nc addObserver: автоматический выбор: @selector (keyboardWillShow :) name: UIKeyboardWillShowNotification object: nil];

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

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

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

Есть предложения?

Ответы [ 3 ]

1 голос
/ 03 апреля 2009

UIKeyboardWillShowNotification исходит из вашего экземпляра окна, и для всех намерений и целей это "системное" уведомление. Клавиатура либо показывает, либо не показывает, на самом деле это не то, что связано с определенным элементом управления.

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

0 голосов
/ 04 апреля 2009

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

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

0 голосов
/ 03 апреля 2009

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

Вы должны проверить свою клавиатуру как ShowShow, если ваш конкретный текстовый вид является FirstResponder.

...