Эффективное создание подклассов стандартных элементов управления Какао - PullRequest
7 голосов
/ 05 февраля 2011

Несмотря на наличие документа Human Interface Guidelines (HIG), многие высококачественные настольные приложения для Mac используют пользовательские элементы управления. Мой вопрос: каков наилучший подход для запуска управления подклассами для разработки Какао? Меня удивляет, как мало (хорошей) информации по этой теме. Каким путем лучше следовать, чтобы не получить хороший, но наполовину сломанный контроль?

Ответы [ 2 ]

32 голосов
/ 05 февраля 2011

Вот контрольный список:

  • Убедитесь, что ваш элемент управления работает правильно при двойном разрешении.Используйте Quartz Debug для проверки этого.Вы захотите проверить работоспособность рисования (во всех состояниях - нормальное, выбранное, нажатие, отключение и любые другие) и работоспособность (тестирование совпадений совпадает с тем, где что-то появляется на экране / другом устройстве назначения).
  • Для дополнительной оценки убедитесь, что ваш элемент управления работает правильно с разрешением 1,5 (или с другим аналогичным неинтегральным).
  • Проверьте, как работает стандартный элемент управления при нажатии.Вы, вероятно, сделаете это в любом случае.Делайте так, как это делает стандартный элемент управления.
  • Проверьте, как работает стандартный элемент управления, если щелкнуть его наполовину (мышь внутри, мышь снаружи).
  • Проверить, как работает стандартный элемент управления, когда темная сторона-of-the-clicked (мышь внизу, мышь вверху внутри).
  • Проверка работы стандартного элемента управления при перетаскивании внутрь.
  • Проверка выше четырех с другими кнопками мыши (справа и в центре).
  • Проверьте, что делает стандартный элемент управления при прокрутке с помощью колеса прокрутки.Также проверьте shift + scroll и, на мыши, которая их имеет (например, большинство мышей Logitech), прокрутите кнопки влево / вправо.
  • Проверьте, что делает стандартный элемент управления, когда вы прокручиваете двумя пальцами по каждой оси и вобе оси.
  • Проверьте, что делает стандартный элемент управления, когда вы зажимаете и когда вы отжимаете.
  • Проверьте, что делает стандартный элемент управления, когда вы проводите тремя и четырьмя пальцами по каждой оси.
  • Проверьте, как работает стандартный элемент управления с включенным «Полный доступ с клавиатуры».Можете ли вы вкладывать в это?Можешь нажать на него пробелом?Можете ли вы ввести его с помощью ключа возврата?Можете ли вы выйти из него?
  • Проверьте, как стандартный элемент управления отвечает на запросы специальных возможностей.Используйте Инспектора Доступности.См. Рекомендации по программированию специальных возможностей для какао для получения информации об ответах на запросы специальных возможностей и сообщения в вашем элементе управления.
  • Протестируйте свое приложение, включая, помимо прочего, ваши пользовательские элементы управления в VoiceOver.С завязанными глазами и попробуйте использовать приложение только с VoiceOver.
  • Если применимо, проверьте печать своего представления.Вы можете распечатать в Preview, если не хотите уничтожать дерево для процесса разработки.
  • Тест печати на бумаге другого размера.Если вы в США, протестируйте A4;в противном случае, проверьте письмо США.Если вы чувствуете себя хорошо, протестируйте бумагу других форматов (например, Legal и A3).
  • Если вы используете скроллер ( плохо ), проверьте, правильно ли реагирует ваш скроллер.параметр «Перейти к (следующая страница | место, на которое нажали)» на панели «Внешний вид» в «Системных настройках».«Правильно» означает, что он должен делать то, что выбрал пользователь.
  • Убедитесь, что он правильно реализует все четыре настройки положения стрелки прокрутки: Один на каждом конце (стиль Mac), оба внизу / слеваend (стиль NeXT), как на верхнем / правом конце, так и на каждом конце (стиль опытного пользователя). Как всегда, вам нужно и правильно рисовать, и тестировать / правильно реагировать.(Рекомендуется от @ radiofreelunch * Дэвид Данхэм / )
  • Кроме того, если вы используете скроллер, убедитесь, что он правильно реагирует на предпочтение «Плавная прокрутка».
  • Проверьте, правильно ли он реагирует на различные предпочтения скорости прокрутки.
  • Если вы реализуете какое-либо поле ввода текста или любое представление, которое реагирует на какую-то специальную горячую клавишу (например, Enter, чтобы отправить сообщение в строку ввода), тестирование ввода текста справа налево (иврит / арабский) и альтернативные методы ввода.Просмотр персонажей - хорошее начало.
  • Также проверьте, что вы не сломали Ctrl-Q.Например, ctrl-q, tab всегда должен вводить символ табуляции.Как правило, то же самое относится и к опции + (клавиша), такой как опция-возврат во входной строке.
  • Проверьте, правильно ли она реагирует на различные предпочтения повторения клавиши.
  • Если вы реализуетелюбые пользовательские сочетания клавиш (zero + ноль или более других модификаторов + одна или несколько символьных клавиш) с помощью средств, отличных от стандартной обработки сочетаний клавиш в Какао, проверьте свое пользовательское поведение сочетаний клавиш в Dvorak.Нет более быстрого способа испортить наше восприятие вашего приложения, чем ответить на ⌘ ', выйдя из него.
  • Покажите ваше приложение пользователям, которые никогда не использовали его и не видели никаких макетов раньше.Дисквалифицировать программистов.Если они не распознают ваш контроль как (каким он должен быть), перепроектируйте его.Если вы когда-нибудь скажете «скроллер здесь» или «вам нужно нажать на это», вы сразу же потерпите неудачу.
  • Проверьте, что ваш элемент управления отвечает (или не отвечает, если отвечать опасно), когда вашприложение находится в фоновом режиме.( Предложено @ chucker. )
  • Проверьте, что ваш элемент управления реагирует, но не выводит приложение вперед, когда ваше приложение находится в фоновом режиме и пользователь нажимает на него клавишей ⌘вниз.( Предложено @ chucker. )
  • Проверьте изменение размера вашего взгляда.Помимо прочего, это обеспечит правильную настройку маски авторазмера.Вам также нужны рисунки ошибок - искаженные элементы, пробелы и т. Д. (Часть этого , предложенная @ Bagelturf .)
  • Если ваш элемент управления фактически является элементом управления, отправьтеэто sizeToFit и убедитесь, что он делает правильные вещи.( Предложено @ Bagelturf. )
  • Если вы работаете с координатами мыши, не думайте, что они будут целыми числами.Убедитесь, что вы правильно обрабатываете дробные числа, нули (положительные и отрицательные) и отрицательные числа.(Часть этого , предложенная @ Bagelturf .)
  • Вы также можете рассмотреть возможность разделения вашего контроля на элемент управления и ячейку.В последнем случае также выполните все эти тесты для вашей ячейки, встроенной в NSMatrix и в NSTableColumn.
  • Если у вашего элемента управления есть меню, проверьте, что происходит, когда элемент управления находится на одном или нескольких краях элемента.экран.Меню должно перемещаться, чтобы не выходить за пределы экранного пространства.
  • Если у вашего элемента управления есть меню, проверьте, что пользователь может войти в него с помощью клавиши со стрелкой вниз при использовании «Полный доступ с клавиатуры».Если это также текстовое поле (например, поле со списком), проверьте, что это происходит только тогда, когда пользователь нажимает стрелку вниз в конце текста;в противном случае следует придерживаться нормального поведения текстового поля: нажатие на строку, которая не является последней строкой, должно сдвинуть курсор вниз на строку, а нажатие вниз на последней строке должно перейти к концу строки.
  • Если у вашего элемента управления есть меню, проверьте, чтобы оно оставалось открытым при нажатии и не закрывалось сразу же, когда оно открыто. Есть функция, которую вы можете использовать, чтобы сделать это правильно , и она доступна в 64-битном .
  • Если у вашего элемента управления есть меню, проверьте, что онос возможностью навигации (все четыре клавиши со стрелками + Home, End, Page Up, Page Down), с возможностью использования (пробел / обратное нажатие) и отменой (esc) с помощью клавиатуры.
3 голосов
/ 05 февраля 2011

Трудно что-либо добавить в список Питера, но если вы используете полосу прокрутки, убедитесь, что она обрабатывает все отклоняющиеся положения стрелок прокрутки (например, DoubleBoth).

...