Такое разное редактирование
Отображение данных — это замечательно, но удобство приложения проявляется в области редактирования. DrinkMixer выглядит вполне достойно, в нем используется настройка ячеек табличного представления, а для отображения данных задействованы словари в списках plist. Это удобное справочное приложение, и мы заложили основу для добавления новых рецептов. Пора заняться модификацией данных: сохранением, редактированием и сортировкой. В этой главе рассматриваются основные схемы редактирования, вы узнаете, как навигационный контроллер помогает пользователям ориентироваться в вашем приложении.
Василий собирается ввести новый рецепт.
Вася решил опробовать приложение DrinkMixer с новым представлением для ввода рецептов. Сразу же появились первые проблемы.
С представлением возникли проблемы: некоторые поля оказались недоступны для пользователя, ему мешает клавиатура.
Мы снова столкнулись с проблемой, которая уже встречалась нам в приложении InstaEmail. Когда Василий выбирает элемент, тот получает фокус (становится первым ответчиком) и дает команду iOS отобразить клавиатуру. Вроде бы вполне разумно, однако.
Как мы решали проблему с клавиатурой в тот раз? Сработает ли это решение сейчас? И что должно делать представление при появлении клавиатуры?
В тот раз сработал отказ от роли первого ответчика. Это решение подойдет для поля названия но что делать с ингредиентами и инструкциями? Их закрывает клавиатура. Открытая клавиатура оставляет меньше места для работы, придется использовать прокрутку. В этом нам поможет класс UlScrollView.
Класс UlScrollView очень похож на основной класс представления UlView, который мы уже использовали, но он умеет прокручивать представление для отображения скрытых элементов (кнопок, текстовых полей и т. д.). Он отображает полосу прокрутки и управляет ей, обеспечивает масштабирование и панорамирование, а также управляет тем, какая часть внутреннего представления видна на экране. Для этого ему необходимо знать общие размеры контента и размеры области, доступной для отображения (называемой «кадром»). По этим данным UlScrollView вычисляет все остальное.
Вспомните, что в CocoaTouch компоненты являются субклассами UlView. Прокручиваемому представлению необходима лишь информация о субпредставлениях, которыми оно должно управлять — один огромный элемент UHmageView с крупным изображением, которое можно рассматривать по частям, или же многочисленные текстовые поля, кнопки и надписи.
Чтобы представление прокручивалось, необходимо переместить компоненты в UlScrollView вместо UlView. Пора вернуться к Interface Builder.
- Дата: 20-12-2014, 13:24