Есть ли уведомления iPhone для всех UIResponders? - PullRequest
0 голосов
/ 04 июня 2009

Я знаю об этих уведомлениях на iPhone, так как они могут понадобиться для прокрутки текстового представления на место, когда они скрыты клавиатурой:

  • UIKeyboardWillShowNotification
  • UIKeyboardDidShowNotification
  • UIKeyboardWillHideNotification
  • UIKeyboardDidHideNotification

Сейчас у меня есть какое-то значение, которое я хочу обновлять каждый раз, когда пользователь вводит какой-либо ввод, используя ЛЮБОЙ элемент управления. Но я имею дело со всеми видами различных элементов управления - TextViews, TextFields, Pickers, SegmentedViews и т. Д.

Есть ли способ, которым я могу зарегистрироваться для уведомления, отправляемого всеми ответчиками UIR?

Я ищу типы уведомлений, кроме перечисленных выше - есть ли где-нибудь точный список?

Ответы [ 3 ]

1 голос
/ 05 июня 2009

Теоретически, если посмотреть на типы событий, которые вы можете прикрепить к действию в IB, valueChanged будет идеальным (это не уведомления).

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

0 голосов
/ 05 июня 2009

Если вы хотите получать все уведомления, просто зарегистрируйтесь под именем nil:

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

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

0 голосов
/ 04 июня 2009

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

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardExposes:)
                                             name:UIKeyboardWillShowNotification
                                           object:nil];

После лучшего понимания вашего вопроса я добавил следующее:

Нет определенного списка всех уведомлений, так как их тип (имя) является только строкой, и каждый может придумывать новые уведомления (в том числе только для личного пользования). Но вы можете легко перечислить заявленные уведомления из iPhone SDK:

find  /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.1.sdk/ \
  -name "*.h" -exec cat {} \; \
  | grep -E "NSString[[:space:]]*\*[[:space:]]*(const)?[[:space:]]*[[:alnum:]]+Notification" \
  | grep -E -o "[[:alnum:]]+Notification"

В этом списке 46 уведомлений.

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