Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Инструкции по интерфейсу пользователя OS X

iBook

Перетаскивание

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

В дополнение к обработке данных пользователей без потери, поддерживая перетаскивание в основном вопрос обеспечения надлежащей обратной связи. В частности пользователи должны знать:

  • Возможно ли перетаскивание для элемента (обозначенный обратной связью перетаскивания)

  • Что результаты работы перетаскивания будут (обозначены целевой обратной связью)

  • Была ли работа перетаскивания успешна (обозначенный обратной связью отбрасывания)

Следующие инструкции помогают, Вы обеспечить перетаскивание испытываете это, пользователи ценят.

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

Определите, должна ли работа перетаскивания привести к перемещению или копии. В целом, если источник и место назначения находятся в том же контейнере, таком как то же окно или объем, работа перетаскивания интерпретирована как перемещение (т.е. вырезана и вставлена). Если источник и место назначения находятся в различных контейнерах, работа перетаскивания интерпретируется как копия (т.е. копия и вставка).

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

Проверьте на функциональную клавишу во время отбрасывания. Это поведение дает пользователю гибкость принятия решения перемещения-или-копии позже в последовательности перетаскивания. Нажатие функциональной клавиши во время последовательности перетаскивания не должно «фиксироваться» для остатка от последовательности.

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

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

image: ../Art/drag_from_inactive_2x.png

В частности фоновый выбор поддержки для элементов, которые пользователи должны выбрать диапазоном, таким как текст или группа значков. Если Вы не поддерживаете фоновый выбор для выбранных пунктов диапазона, пользователь должен повторно активировать окно и повторно выбрать элементы прежде, чем перетащить их. Поддержка фонового выбора не требуется, если элемент, который пользователь хочет перетащить, дискретен — например, значок или графический объект — потому что неявный выбор может произойти, когда перетаскивается дискретный элемент. Обратите внимание на то, что, когда неактивное окно сделано ключевым, появление фонового выбора изменяется на появление стандартного выбора. Для узнавания больше о различных состояниях, окно может иметь, видеть Основной, Ключевой, и Неактивный Windows.

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

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

image: ../Art/multiple_drag_mail_2x.png

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

image: ../Art/multiple_drag_2x.png

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

Используйте надлежащий указатель для указания то, что произойдет, когда пользователь отбросит элемент. Например, когда пользователи перетаскивают значок на панель инструментов, указатель копии, кажется, указывает, что, если они отпускают его там, элемент будет добавлен к панели инструментов. Другие указатели, обеспечивающие полезную целевую обратную связь, включают псевдоним, гомосексуала, и не позволенные указатели. (Для получения дополнительной информации о предоставленных системой указателях, посмотрите Указатели.)

Обновление значок мультиэлемента перетаскивает в надлежащих случаях. Если место назначения может признать, что только подмножество мультиэлемента перетаскивает, изменяет число в значке для указания, сколько из элементов будет принято.

Выделите целевую область, как только указатель вводит ее, и прекратите выделяться, когда указатель оставляет область. Если существуют многократные целевые области в окне, выделите одну целевую область за один раз.

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

В тексте используйте вертикальный индикатор вставки для показа, где будет вставлен перетащенный элемент. Обратите внимание на то, что индикатор вставки является отдельным от указателя. Указатель указывает пользователям, допустимо ли перетаскивание и интерпретируется ли это как копия.

В списке используйте горизонтальный индикатор вставки для показа, где будет вставлен элемент. Например, когда пользователь перетаскивает файл в навигатора XCode, горизонтальный индикатор вставки появляется.

image: ../Art/drag_insertion_indicator_2x.png

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

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

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

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

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

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

  • Если пользователь перетаскивает элемент от активного окна до неактивного окна, перетащенный элемент становится фоновым выбором в месте назначения. Активное окно должно поддержать выбранное состояние элемента.

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

Автоматически прокрутите целевое окно в надлежащих случаях. Когда элемент перетаскивается, Ваше приложение должно определить, прокрутить ли содержание или позволить элементу «выходить» из окна. Если Ваше приложение позволяет элементам быть перетащенными за пределами окон, необходимо определить автоматическую область прокрутки. Автоматически прокрутите целевое окно, только если это - также исходное окно и является frontmost. Автоматически не прокручивайте неактивные окна.

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

Создайте отсечение или другой элемент для содержания содержания, которое пользователи перетаскивают от приложения до Мусора. Отсечение является промежуточной формой содержания, перетащенного от исходного расположения, но еще не перетащенного его конечному месту назначения. Например, OS X позволяет пользователям перетаскивать содержание к окну Finder (или на рабочий стол) и затем, на более позднем шаге, перетаскивать содержание другому месту назначения. (Обратите внимание на то, что отсечение не имеет никакого отношения к Буферу обмена: Копирование к Буферу обмена и создание отсечений перетаскивания не вмешиваются друг в друга.)