Отмена UIActionSheet аналогична его отмене.А поскольку UIActionSheet является лишь небольшим окном поверх (и обычно указывающим на) опции, вызвавшей его, он не привлекает внимание пользователя.Таким образом, предполагаемое интуитивное действие в этом случае заключается в использовании UIActionSheet для его удаления.Так что это означает кнопку отмены (и почему вам «иногда» не нужна другая, согласно расплывчатой документации).
На странице документации UIActionSheet :
При представлении листа действий на iPad бывает, что вам не нужно включать кнопку отмены.Если вы представляете только лист действий, система отображает лист действий внутри всплывающего окна без использования анимации.Поскольку касание вне всплывающего окна отклоняет лист действия без выбора элемента, это приводит к способу отмены листа по умолчанию.Поэтому включение кнопки отмены может привести только к путанице.Однако, если у вас есть всплывающее окно и вы видите лист действий поверх другого контента с использованием анимации, кнопка отмены по-прежнему уместна.Для получения дополнительной информации см. Руководство по интерфейсу пользователя iOS.
Если вы реализуете actionSheet: clickedButtonAtIndex: метод, то при нажатии кнопки UIActionSheet индекс кнопки будет равен -1.Другие кнопки начинаются с индекса 0.
Я думаю, что вывод заключается в том, что рекомендации Apple являются несовместимыми или невозможными в некоторых сценариях.Но, исходя из языка документации и моего прочтения HIG, вы должны попытаться выполнить условия, которые имеют смысл, и не слишком сильно его раздражать, если это не имеет смысла в вашей реализации.