Вандад Нахавандипур - iOS. Приемы программирования

Тут можно читать онлайн Вандад Нахавандипур - iOS. Приемы программирования - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство Питер, год 2014. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    iOS. Приемы программирования
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2014
  • Город:
    Санкт-Петербург
  • ISBN:
    978-5-496-01016-0
  • Рейтинг:
    3.9/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Вандад Нахавандипур - iOS. Приемы программирования краткое содержание

iOS. Приемы программирования - описание и краткое содержание, автор Вандад Нахавандипур, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.

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

iOS. Приемы программирования - читать онлайн бесплатно ознакомительный отрывок

iOS. Приемы программирования - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Вандад Нахавандипур
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

/* Ключ имени в словаре пользовательской информации уведомления */

extern NSString *const kSetPersonInfoKeyFirstName;

/* Ключ фамилии в словаре пользовательской информации уведомления */

extern NSString *const kSetPersonInfoKeyLastName;

@interface AppDelegate: UIResponder

@property (nonatomic, strong) UIWindow *window;

@end

А вот реализация делегата нашего приложения:

#import «AppDelegate.h»

#import «Person.h»

NSString *const kSetPersonInfoNotification = @"SetPersonInfoNotification";

NSString *const kSetPersonInfoKeyFirstName = @"firstName";

NSString *const kSetPersonInfoKeyLastName = @"lastName";

@implementation AppDelegate

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

Person *steveJobs = [[Person alloc] init];

NSNotification *notification =

[NSNotification

notificationWithName: kSetPersonInfoNotification

object: self

userInfo:@{kSetPersonInfoKeyFirstName: @"Steve",

kSetPersonInfoKeyLastName: @"Jobs"}];

/* В настоящее время класс person слушает это уведомление. Этот класс

извлечет из уведомления информацию об имени и фамилии и задаст

собственные имя и фамилию, основываясь на информации, полученной

из пользовательского словаря уведомления. */

[[NSNotificationCenter defaultCenter] postNotification: notification];

/* Вот доказательство */

NSLog(@"Person's first name = %@", steveJobs.firstName);

NSLog(@"Person's last name = %@", steveJobs.lastName);

self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Важнее всего в данном случае будет реализация класса Person (Person.m):

#import «Person.h»

#import «AppDelegate.h»

@implementation Person

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

self.firstName = paramNotification.userInfo[kSetPersonInfoKeyFirstName];

self.lastName = paramNotification.userInfo[kSetPersonInfoKeyLastName];

}

— (instancetype) init{

self = [super init];

if (self!= nil){

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

[center addObserver: self

selector:@selector(handleSetPersonInfoNotification:)

name: kSetPersonInfoNotification

object: [[UIApplication sharedApplication] delegate]];

}

return self;

}

— (void) dealloc{

[[NSNotificationCenter defaultCenter] removeObserver: self];

}

@end

Значение, указываемое для параметра object метода addObs erver: selector: name: object:, — это объект, от которого, как предполагается, должно поступать уведомление. Если какой-то другой объект пошлет уведомление с таким же именем, то ваш слушатель не должен будет обрабатывать это уведомление. Как правило, вы указываете такой объект в тех случаях, когда точно знаете, какой именно объект должен посылать интересующее вас уведомление. Такая возможность есть не всегда. Например, бывают очень сложные приложения, где один контроллер вида, расположенный на конкретной вкладке, должен слушать уведомления, поступающие от другого контроллера вида, находящегося на другой вкладке. При этом у слушателя может и не быть ссылки на тот экземпляр контроллера вида, откуда будет исходить уведомление. В таком случае можно передать nil параметру parameter вышеупомянутого метода.

Запустив это приложение, вы увидите на консоли следующий вывод:

Person's first name = Steve

Person's last name = Jobs

Итак, и отправка, и получение этого уведомления произошли внутри нашей программы. А что насчет системных уведомлений? Мы подробнее поговорим о них в дальнейшем. Сейчас, пока вы находитесь в Xcode, нажмите комбинацию клавиш Command+Shift+O (O — это Open (Открыть)), после чего введите UIWindow.h. Открыв этот файл заголовка, найдите в нем объект UIKeyboardWillShowNotification, а в этом объекте — такой блок кода:

// Каждое уведомление включает в себя объект nil и словарь userInfo,

// содержащий (в координатах экрана) начало и конец области, которую

// занимает на дисплее виртуальная клавиатура.

// Пользуйтесь различными возможностями convertRect, относящимися к UIView и UIWindow, чтобы получить контур клавиатуры в желаемой системе

// координат. Анимационные пары «ключ/значение» доступны лишь для

// уведомлений, относящихся к семейству «will»

UIKIT_EXTERN NSString *const UIKeyboardWillShowNotification;

UIKIT_EXTERN NSString *const UIKeyboardDidShowNotification;

UIKIT_EXTERN NSString *const UIKeyboardWillHideNotification;

UIKIT_EXTERN NSString *const UIKeyboardDidHideNotification;

Это код Apple. Мы написали наш код точно таким же образом. Apple предоставляет уведомления, отправляемые системой, а затем документирует их. Вам понадобится сделать нечто подобное. При создании уведомлений, посылаемых компонентами, находящимися внутри вашего приложения, обязательно документируйте эти уведомления и объясняйте другим программистам (в частности, коллегам, работающим с вами в одной команде), каковы типичные значения, содержащиеся в пользовательском словаре такого уведомления, а также сообщайте им всю прочую важную информацию о ваших уведомлениях.

15.3. Слушание уведомлений, поступающих с клавиатуры, и реагирование на них

Постановка задачи

Мы позволяем пользователю вводить какой-либо текст в нашем графическом интерфейсе. Для этого применяется определенный компонент, например текстовое поле или текстовый вид, требующий наличия клавиатуры. Тем не менее если всплывающая на экране виртуальная клавиатура заслоняет половину пользовательского интерфейса, то она практически бесполезна. Подобной ситуации необходимо избегать.

Решение

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

Обсуждение

У устройств, работающих с операционной системой iOS, нет физической клавиатуры. Но у них есть виртуальная клавиатура, всплывающая на экране всякий раз, когда пользователь должен ввести текст в какое-нибудь текстовое поле (UITextField, см. раздел 1.19) или текстовый вид (UITextView, см. раздел 1.20). На iPad пользователь даже может делить клавиатуру на части и перемещать их вверх и вниз. Есть несколько пограничных случаев, о которых, вам, возможно, придется позаботиться при проектировании пользовательского интерфейса. Можете обратиться к помощи дизайнеров пользовательских интерфейсов (если в вашей компании есть такие специалисты) и рассказать им, что на iPad пользователь может делить клавиатуру на части. Перед тем как приступать к творческой работе, они должны об этом узнать. В этом разделе мы коснемся подобного пограничного случая.

Сначала рассмотрим, как выглядит клавиатура в iPhone. Виртуальная клавиатура может отображаться в книжной или альбомной ориентации. В книжной ориентации клавиатура iPhone выглядит так, как на рис. 15.1.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Вандад Нахавандипур читать все книги автора по порядку

Вандад Нахавандипур - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




iOS. Приемы программирования отзывы


Отзывы читателей о книге iOS. Приемы программирования, автор: Вандад Нахавандипур. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x