Листы действия
Действие покрывает дисплей ряд кнопок, представляющих несколько альтернативного выбора выполнить задачу, инициируемую пользователем. Например, когда пользователь касается кнопки Share на панели инструментов приложения, лист действия кажется предлагаемым список выбора, такого как электронная почта, Печать, и т.д.
Цель. Листы действия позволяют пользователям:
Быстро выберите из списка действий
Подтвердите или отмените действие
Реализация. Листы действия реализованы в UIActionSheet
класс и обсудил в Ссылке класса UIActionSheet.
Конфигурация. Листы действия создаются, инициализируются и конфигурируются в коде, обычно находясь в файле реализации контроллера представления.
Содержание (программируемых) листов действия
Вы не можете создать или управлять листами действия в Интерфейсном Разработчике. Скорее лист действия плавает по существующему представлению для прерывания его представления, и он требует, чтобы пользователь отклонил его.
Когда Вы создаете объект листа действия из UIActionSheet
класс, можно инициализировать его самые важные свойства с одним методом, initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles:
. В зависимости от потребностей Вашего приложения, что единственного сообщения может быть достаточно для конфигурирования полностью функционального объекта листа действия, как показано в следующем коде. Как только Вы создали объект листа действия, отправьте ему a show...
сообщение, такой как showInView:
вывести на экран лист действия.
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:@"Delete Note"
otherButtonTitles:nil];
Несмотря на то, что первый параметр initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles:
метод позволяет Вам обеспечить заголовок для листа действия, инструкции по интерфейсу пользователя iOS рекомендуют не использовать заголовок.
Как описано в инструкциях по интерфейсу пользователя iOS, необходимо включать Кнопку отмены с листами действия, выведенными на экран на iPhone и с выведенными на экран на iPad по открытой легкой сдобе. Иначе на iPad, листы действия выведены на экран в легкой сдобе, и пользователь может отменить лист действия путем ответвления вне легкой сдобы, когда Вы не должны включать Кнопку отмены.
Для создания Кнопки отмены передайте не -nil
значение для cancelButtonTitle:
параметр initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles:
метод. Кнопка отмены, создаваемая таким образом, расположена у основания листа действия.
Когда Ваш лист действия представляет потенциально разрушительный выбор, необходимо включать разрушительную кнопку путем передачи не -nil
значение для destructiveButtonTitle:
параметр initWithTitle:delegate:cancelButtonTitle:destructiveButtonTitle:otherButtonTitles:
метод. Разрушительная кнопка, создаваемая таким образом, автоматически окрашена в красный и расположенный наверху листа действия.
Поведение (программируемых) листов действия
Можно принять решение представить лист действия так, чтобы он произошел из панели инструментов, панели вкладок, элемента кнопочной панели, из представления, или от прямоугольника в представлении. На iPhone, потому что лист действия скользит с нижней части представления и покрывает ширину экрана, большей части использования приложений showInView:
. На iPad, однако, листы действия появляются в легкой сдобе, стрелка которой показывает на управление на пользователя, коснувшегося для вызова выбора, представленного листом действия. Так, showFromRect:inView:animated:
и showFromBarButtonItem:animated:
являются самыми полезными на iPad.
Для обработки выбора, представленного листом действия, необходимо назначить делегата обрабатывать действие кнопки, и делегат должен соответствовать UIActionSheetDelegate
протокол. Вы назначаете делегата с delegate
параметр, когда Вы инициализируете объект листа действия. Делегат должен реализовать actionSheet:clickedButtonAtIndex:
сообщение для ответа, когда касается кнопка. Например, следующий код показывает реализацию, просто регистрирующую заголовок коснувшейся кнопки.
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"The %@ button was tapped.", [actionSheet buttonTitleAtIndex:buttonIndex]);
}
Используя автоматическое расположение с листами действия
Расположение листов действия обрабатывается для Вас. Вы не можете создать Автоматические Ограничения макета между листом действия и другим элементом пользовательского интерфейса.
Для получения общей информации об использовании Автоматического Расположения с представлениями iOS, посмотрите Используя Автоматическое Расположение с Представлениями.
Создание доступных листов действия
Листы действия доступны по умолчанию.
Доступность для листов действия прежде всего касается заголовков кнопки. Если VoiceOver активируется, он произносит слово «предупреждение», когда лист действия показан, то говорит свой заголовок, если установлено (несмотря на то, что инструкции по интерфейсу пользователя iOS рекомендуют против листов действия создания заголовков). Поскольку пользователь касается кнопки в листе действия, VoiceOver говорит свой заголовок и слово «кнопка».
Для получения общей информации о создании доступных представлений iOS, посмотрите Доступные Представления Создания.
Интернационализация листов действия
Для интернационализации листа действия необходимо обеспечить локализованные переводы заголовков кнопки. Размер кнопки может измениться в зависимости от языка и локали.
Для получения дополнительной информации посмотрите Руководство по Интернационализации и Локализации.
Отладка листов действия
При отладке проблем с листами действия наблюдайте за этой распространенной ошибкой:
Не тестирование локализаций. Обязательно протестируйте листы действия в Вашем приложении с локализациями, которые Вы намереваетесь поставить. В частности заголовки кнопки могут усечь, если они более длинны в локализациях кроме той, в которой Вы разработали свой пользовательский интерфейс. После инструкции HI, чтобы дать кнопкам короткие, логические заголовки помогают повысить качество этой потенциальной проблемы, но также требуется тестирование локализации.
Элементы, подобные листу действия
Следующие элементы обеспечивают схожую функциональность для листа действия:
Предупредительное Представление. Используйте предупредительное представление для передачи важной информации о приложении или устройстве, прерывая пользователя и требуя, чтобы они остановили то, что они делают, чтобы выбрать действие или отклонить предупреждение. Для получения дополнительной информации посмотрите Предупредительные Представления.
Модальное Представление. Используйте модальное представление (т.е. контроллер представления использует модальный стиль презентации), когда пользователи инициируют автономную подзадачу в контексте их потока операций или другой задачи. Для получения дополнительной информации посмотрите Ссылку класса UIViewController.