iPad上的UIActionSheet没有显示取消按钮

31

我试图在UIActionSheet中显示取消按钮,但它没有显示出来,这是可以接受的行为吗?请给予建议。

UIActionSheet *actionSheet = [[UIActionSheet alloc]
          initWithTitle:@"Are you sure you want to clear the cache?"
          delegate:self
          cancelButtonTitle:@"No"
          destructiveButtonTitle:@"Yes"
          otherButtonTitles:nil];

[actionSheet showInView:self.view];  

[actionSheet release];

1个回答

57

iPad在显示动作表(action sheet)及其取消按钮方面有一些特殊规则,具体取决于您从哪里显示它:

您可以从工具栏(toolbar)、标签栏(tab bar)、按钮栏(button bar item)或视图(view)中呈现动作表。该类在确定如何呈现动作表时考虑了起始视图和当前平台。对于在iPhone和iPod touch设备上运行的应用程序,动作表通常从拥有该视图的窗口底部滑出。对于在iPad设备上运行的应用程序,动作表通常在一个气泡视图(popover)中显示,并以适当的方式锚定到起始视图。点击弹出窗之外的区域会自动关闭动作表,点击任何自定义按钮也会关闭它。您也可以通过编程来关闭它。

在iPad上呈现动作表时,有时候不应该包括取消按钮。如果您只是呈现动作表,系统会在不使用动画的情况下在气泡视图中显示动作表。因为点击气泡视图之外会使动作表被关闭而不会选择任何项目,这会导致默认的取消表单的方式。因此,包含取消按钮只会引起困惑。然而,如果您有一个现有的气泡视图,并且正在使用动画在其他内容之上显示一个动作表,则仍然适合包含取消按钮。有关更多信息,请参见iPad人机界面指南。

这里有一个链接,提供了更多解释:http://crazyviraj.blogspot.com/2010/05/showing-cancel-button-in.html


我很高兴看到这个,这意味着我没有让用户感到困惑并寻找取消按钮? - Ahmad Kayyali
5
是的,这意味着大多数时候人们只需在iPad上点击操作表之外的其他地方即可选择“取消”。查看iPad邮件应用程序以了解苹果处理此问题的一种方式(在纵向模式下,移动按钮),或者在照片应用程序中查找删除按钮。 - nevan king
1
在iPad上,如果取消按钮未显示,则在iOS8中不需要在UIActionSheet中使用“Cancel”字符串。但是,在iOS7(及更早版本?)中,需要使用“Cancel”字符串以便在最后两个项目之间获得分隔符(我认为仅适用于有两个以上项目的情况)。唉! - Chris Prince
@nevanking king,有时候苹果的UI设计真是令人费解。我的意思是说,你可能需要在iPhone上按下操作表之外的某个地方来取消它,这点逻辑在iPad上为什么不能包含一个“取消”按钮呢?这样并不会使人感到困惑,相反,它会让事情变得更清晰明了...顺便说一句,我不是要指责信息传递者,感谢您提供苹果滑稽的解释。 - Charles Robertson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接