Передача сообщений


Передача сообщений

Да, это похоже на передачу сообщений, но есть и различия. Во-первых, отправителю не нужно знать, кого оповещать, они уведомляют меня о событии, а я оповещаю все заинтересованные стороны. Во-вторых, оповещения могут рассылаться многим получателям, а при обычной передаче общение идет «один на один». В-третьих, в отличие от паттерна «Делегат» (где сообщение отправляется только одному объекту), я могу рассылать сообщение любому количеству объектов. Получатель оповещения может не знать, кто отправляет сообщение. Если объект желает получать оповещения о закрытии приложения, для него неважно, кто именно известит его об этом. Объект просто верит, что я извещу его.

Значит, любой желающий может отправлять оповещения?

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

А откуда они знают, какие оповещения нужно отправлять?

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

Понятно. Что ж, Центр Оповещений, беседа получилась интересной. Спасибо!

Зарегистрироваться для получения событий клавиатуры несложно, но ведь это не все, верно?

Безусловно.

Мы должны объяснить прокручиваемому представлению, что ему делать после появления клавиатуры на экране (и после ее закрытия).

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

Включите методы keyboardDidShow и keyboardDidHide б AddDrinkViewController.

Пока пусть эти методы просто выводят сообщение на консоль. Оба метода должны получать NSNotification, так как они будут вызываться центром оповещений с передачей информации об оповещении.

Зарегистрируйтесь на оповещения UIKeyboardDidShowNotification и UIKeyboardDidHideNotification 6 viewW/illAppear(.).

Используя стандартный объект NSNotificationCenter, зарегистрируйтесь на получение обоих событий независимо от отправителя.

Отмените регистрацию всех событий в viewW/illDisappear(.).

Создайте этот метод и включите в него код отмены регистрации.

Включите 6 AddDrinkViewController переменную типа B00L, представляющую текущее состояние клавиатуры (видна или нет).

Вскоре мы поговорим на эту тему более подробно; пока достаточно сказать, что нам понадобится флаг для определения того, отображалась ли клавиатура ранее. Присвойте переменной исходное значение NO в viewWillAppear.
  • Дата: 21-12-2014, 19:16

Предыдущие статьи сайта:

Понравилась статья? Ставь лайки, рассказывай друзьям!



Отзывы о статье: Передача сообщений

Технологии, секреты и фишки Apple: Iphone, iPad, iPod