Вход/Регистрация
iOS. Приемы программирования
вернуться

Нахавандипур Вандад

Шрифт:

Вот реализация простого контроллера вида, в котором эта техника используется для определения изменений ориентации:

#import «ViewController.h»

@implementation ViewController

— (void) orientationChanged:(NSNotification *)paramNotification{

NSLog(@"Orientation Changed");

}

— (void)viewDidAppear:(BOOL)paramAnimated{

[super viewDidAppear: paramAnimated];

/* Слушаем уведомление */

[[NSNotificationCenter defaultCenter]

addObserver: self

selector:@selector(orientationChanged:)

name: UIDeviceOrientationDidChangeNotification

object: nil];

}

— (void) viewDidDisappear:(BOOL)paramAnimated{

[super viewDidDisappear: paramAnimated];

/* Прекращаем слушать уведомление */

[[NSNotificationCenter defaultCenter]

removeObserver: self

name: UIDeviceOrientationDidChangeNotification

object: nil];

}

@end

Теперь запустите приложение на устройстве. После того как на экране отобразится контроллер вида, нажмите кнопку Home (Домой) для перевода приложения в фоновый режим. После этого попробуйте пару раз изменить ориентацию устройства, а потом перезапустите приложение. Просмотрите результаты и обратите внимание на то, что, когда приложение открывается, обычно направляется одно уведомление к методу orientationChanged:.

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

Решение

Зарегистрируйтесь для получения уведомлений NSUserDefaultsDidChangeNotification.

Обсуждение

В приложениях, написанных для iOS, файл пакета настроек может быть предоставлен пользователю для внесения собственных настроек. Эти настройки будут доступны пользователю в приложении (Settings) на устройстве. Чтобы лучше понять, как работает этот механизм, создадим пакет с настройками.

1. В Xcode выберите File — New File (Файл — Новый файл).

2. Убедитесь, что слева задана категория iOS.

3. Выберите подкатегорию Resources (Ресурсы).

4. В качестве типа файла укажите пакет настроек (Settings Bundle), а потом нажмите Next (Далее).

5. Назовите файл Settings.bundle.

6. Нажмите Save (Сохранить).

Итак, теперь у вас в Xcode есть файл под названием Settings.bundle. Оставьте этот файл как есть, не вносите в него никаких изменений. Нажмите кнопку Home (Домой) и перейдите в приложение Settings (Настройки). Если вы назовете свое приложение foo, то в окне настроек, показанном на рис. 15.4, также будет указано Foo. (Мое приложение я назвал Handling local System Notifications, это название вы видите на рисунке.)

Рис. 15.4. Пакет Settings.bundle отображается в приложении Settings (Настройки) в симуляторе iOS

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

Далее начнем слушать в делегате нашего приложения уведомления NSUserDefaultsDidChangeNotification. Когда приложение завершится, мы, само собой, удалим делегат из цепочки адресатов уведомлений:

#import «AppDelegate.h»

@implementation AppDelegate

— (void) handleSettingsChanged:(NSNotification *)paramNotification{

NSLog(@"Settings changed");

NSLog(@"Notification Object = %@", paramNotification.object);

}

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

  • Читать дальше
  • 1
  • ...
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: