Как удалить подтверждение на iPad в соответствии с рекомендациями по интерфейсу пользователя - PullRequest
3 голосов
/ 04 января 2011

При чтении Руководства по интерфейсу пользователя iOS * выясняется, что «правильного» способа подтверждения пользователя перед удалением не существует. В Руководстве перечисляются 3 вещи, которые имеют дело с UIAlertView и UIActionSheet:

  • Не используйте представление предупреждений для подтверждения действия, инициированного пользователем.
  • Не включайте кнопку «Отмена» на листе действий (на iPad).
  • Лист действий должен содержать как минимум 2 кнопки.

Итак ... Мне нужно, чтобы пользователь подтвердил, что он хочет что-то удалить. Единственный выбор, которым можно их подарить, - это фактически удалить вещь или ничего не делать (отменить). Они могут ничего не делать, щелкая за пределами листа действий, который отклоняет его. Но это оставляет только 1 кнопку для листа действий. Как вы должны сделать подтверждение удаления?

На iPhone есть модальная / анимированная версия листа действий, которая отлично подходит для этой цели. Но iPad полностью меняет способ представления листов действий. Документация говорит, что вы все еще можете представить лист действий на iPad как модальный, представив его с анимацией; но я обнаружил, что он выглядит и действует одинаково, независимо от того, является ли анимация ДА или НЕТ.

Ответы [ 2 ]

1 голос
/ 07 мая 2011

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

На странице документации UIActionSheet :

При представлении листа действий на iPad бывает, что вам не нужно включать кнопку отмены.Если вы представляете только лист действий, система отображает лист действий внутри всплывающего окна без использования анимации.Поскольку касание вне всплывающего окна отклоняет лист действия без выбора элемента, это приводит к способу отмены листа по умолчанию.Поэтому включение кнопки отмены может привести только к путанице.Однако, если у вас есть всплывающее окно и вы видите лист действий поверх другого контента с использованием анимации, кнопка отмены по-прежнему уместна.Для получения дополнительной информации см. Руководство по интерфейсу пользователя iOS.

Если вы реализуете actionSheet: clickedButtonAtIndex: метод, то при нажатии кнопки UIActionSheet индекс кнопки будет равен -1.Другие кнопки начинаются с индекса 0.

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

1 голос
/ 04 января 2011

У меня есть «Отмена загрузки» UIActionSheet в моих приложениях, которое я выскакиваю, чтобы подтвердить, ну, отмена загрузки.Я показываю это так:

UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:nil 
                                                    delegate:self 
                                           cancelButtonTitle:nil 
                                      destructiveButtonTitle:@"Cancel downloads" 
                                           otherButtonTitles:nil];
[action showFromRect:self.cancel.frame inView:self animated:NO];
[action release];

, где self.cancel - это UIButton в UIToolbar.Это дает тот же эффект, что и подтверждение «Удалить» в приложении «Фотографии».Если Apple сделает это для своего программного обеспечения, я полагаю, что с моим все в порядке ...

Надеюсь, это поможет!

...