通过iOS Human Interface Guidelines阅读,似乎没有“正确”的方式让用户在删除前确认。在处理UIAlertView和UIActionSheet时,指南列出了3件事:
所以......我需要让用户确认他们想删除一些东西。呈现它们的唯一选择是实际删除事物,或什么也不做(取消)。他们可以选择不做任何操作,只需点击操作表外部即可解散它。但这只留下1个按钮用于操作表。你打算怎么做删除确认?
在iPhone上,有动作表的模态/动画版本,可以很好地实现此目的。但iPad完全改变了动作表的呈现方式。文档说你仍然可以通过动画呈现iPad上的动作表作为模态;但我发现无论动画是YES还是NO,它的外观和行为都完全相同。
答案 0 :(得分: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
。这与照片应用中的“删除”确认具有相同的效果。如果苹果公司为他们的软件做了这件事,我认为它可以用我的......
希望这有帮助!
答案 1 :(得分:1)
点击UIActionSheet与取消它是一样的。而且由于UIActionSheet只是一个小窗口(并且通常指向)调用它的选项,它不会引起用户的注意。因此,在这种情况下,假定的直观行为是从UIActionSheet中取出以使其消失。所以这等于取消按钮(根据模糊的文档,为什么你“有时”不需要另一个按钮)。
来自UIActionSheet documentation page:
在iPad上展示操作表时,有时您不应包含取消按钮。如果仅显示操作表,系统将在不使用动画的情况下在弹出框中显示操作表。由于弹出窗口外的水龙头在不选择项目的情况下关闭操作表,因此这将导致取消工作表的默认方式。因此,包括取消按钮只会引起混淆。但是,如果您有一个现有的弹出框并且正在使用动画在其他内容上显示一个操作表,则取消按钮仍然是合适的。有关更多信息,请参阅iOS人机界面指南。
如果实现actionSheet:clickedButtonAtIndex:方法,则点击UIActionSheet将返回-1的按钮索引。其他按钮从索引0开始。
我认为,在某些情况下,Apple指南是不一致或不可能的。但是从文档的语言和我对HIG的阅读来看,你应该尝试满足有意义的条件,如果在你的实现中没有意义的话,就不要太过分了。