如何根据人机界面指南在 iPad 上进行删除确认
Posted
技术标签:
【中文标题】如何根据人机界面指南在 iPad 上进行删除确认【英文标题】:How to do delete confirmation on iPad according to the human interface guidelines 【发布时间】:2011-01-04 20:20:49 【问题描述】:通读ios Human Interface Guidelines,似乎没有“正确”的方式让用户在删除前确认。指南列出了处理 UIAlertView 和 UIActionSheet 时的 3 件事:
不要使用警报视图来确认用户启动的操作。 不要在操作表上包含“取消”按钮(在 iPad 上)。 操作表必须至少有 2 个按钮。所以...我需要让用户确认他们想要删除某些内容。向他们展示的唯一选择是实际删除该事物,或者什么都不做(取消)。他们可以通过单击操作表外部来选择不执行任何操作,这会将其关闭。但这只会为操作表留下 1 个按钮。您应该如何进行删除确认?
在 iPhone 上,有模式/动画版本的操作表非常适合此目的。但 iPad 完全改变了操作表的呈现方式。文档说您仍然可以通过动画呈现 iPad 上的操作表作为模态;但我发现无论动画是 YES 还是 NO,它的外观和行为都完全相同。
【问题讨论】:
我不久前的一个相关问题;从来没有得到回应。不同的问题,但相同的主题:***.com/questions/4078871/using-uiactionsheet-on-ipad 顺便说一句,许多应用程序使用警报视图来确认用户发起的操作并且未被拒绝^) Apple 实际上使用警报视图来确认用户在他们自己的软件中启动的操作。在“设置”中创建并尝试删除 ***。 Apple 非常不一致。 【参考方案1】:我的应用中有一个“取消下载”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 为他们的软件这样做,我认为我的没问题...
希望这会有所帮助!
【讨论】:
【参考方案2】:点击 UIActionSheet 与取消它相同。而且由于 UIActionSheet 只是调用它的选项顶部(通常指向)的一个小窗口,因此它不拥有用户的注意力。因此,在这种情况下,假设的直观操作是从 UIActionSheet 中删除以使其消失。所以这等于一个取消按钮(以及为什么你“有时”不需要另一个,根据模糊的文档)。
来自UIActionSheet documentation page:
在 iPad 上显示操作表时,有时您不应该包含取消按钮。如果您只显示操作表,系统会在弹出框内显示操作表而不使用动画。因为在弹出框外点击会关闭操作表而不选择项目,这会导致默认方式取消工作表。因此,包括取消按钮只会引起混乱。但是,如果您有一个现有的弹出框并且正在使用动画在其他内容之上显示一个操作表,那么取消按钮仍然是合适的。有关详细信息,请参阅 iOS 人机界面指南。
如果您实现 actionSheet:clickedButtonAtIndex: 方法,点击 UIActionSheet 将返回 -1 的按钮索引。其他按钮从索引 0 开始。
我认为要点在于,Apple 的指导方针在某些情况下是不一致的或不可能的。但是从文档的语言和我对 HIG 的阅读看来,您应该尝试满足有意义的条件,如果在您的实现中没有意义,也不要费劲。
【讨论】:
以上是关于如何根据人机界面指南在 iPad 上进行删除确认的主要内容,如果未能解决你的问题,请参考以下文章