Код изменения
Внесите в код изменения, необходимые для регистрации событий клавиатуры. Реализацией прокрутки мы займемся чуть позже.
В событиях клавиатуры передается информация о размере и состоянии клавиатуры.
Передача информации о появлении или закрытии клавиатуры нужна нам для того, чтобы уведомить прокручиваемое представление об изменении размера видимой области. Но как определить новый размер? К счастью, вся необходимая информация включена в события клавиатуры UIKeyboardDidShowNotification и UIKeyboardDidHideNotification.
Получить оповещение несложно, но мы будем получать их постоянно, даже если клавиатура уже отображается.
Вот почему нам понадобилась переменная BOOL: в ней хранится признак того, отображается ли клавиатура. Если клавиатура не отображалась до получения оповещения, то мы сообщаем прокручиваемому представлению об уменьшении размера видимой области. Если клавиатура скрывается, то прокручиваемое представление восстанавливается в полном размере.
Размер клавиатуры хранится в объекте NSNotification.
Ниже представлены фрагменты, необходимые для реализации метода keyboardDidHide. Комментарии на правой стороне помогут вам разобраться в том, где должен находиться тот или иной фрагмент.
Рецепт Василия не сохранился.
Стоит нам выйти из детализированного представления, как новый рецепт пропадает из списка. Как же сохранить введенную информацию?
Ответьте на следующие вопросы и подумайте, что все это будет означать для нашего приложения.
Что происходит с введенным рецептом, когда пользователь нажимает кнопку Save?
Куда следует добавить новый код?
Как мы будем сохранять введенный рецепт?
Создать NSMutableDictionary достаточно просто: нужно вызвать alloc и инициализировать объект, а для занесения данных в словарь будет использоваться метод setObjectForKey:. С включением нового словаря в массив рецептов придется потрудиться чуть побольше. Мы должны передать AddDrinkViewController ссылку на массив, и эту ссылку он будет получать от RootViewController.
Включите поддержку сохранения новых рецептов в RootViewController и AddDrinkViewController.
Передача AddDrinkViewController ссылки на массив рецептов.
Включите в класс поле drinkArray и соответствующее свойство, выполните @synthesize и освободите ссылку в dealloc. Позаботьтесь о том, чтобы RootViewController передавал ссылку на массив при создании AddDrinkViewController.
Создание и включение нового словаря в массив.
Измените метод save: так, чтобы он получал информацию о коктейле от элементов и сохранял ее в новом словаре. После этого включите словарь в массив рецептов с использованием addObject.
- Дата: 21-12-2014, 23:10