操作表未在iPad上显示"取消"按钮

23 iphone uiactionsheet ipad

在iPhone上,此代码显示取消按钮:

- (IBAction)buttonPressed
{
    UIActionSheet *actionSheet = [[UIActionSheet alloc]
                                  initWithTitle:@"Are you sure?"
                                  delegate:self 
                                  cancelButtonTitle:@"No way!"
                                  destructiveButtonTitle:@"Yes, I'm sure!"
                                  otherButtonTitles:nil];
    [actionSheet showInView:self.view];
    [actionSheet release];  
}
Run Code Online (Sandbox Code Playgroud)

但在iPad上,只有破坏性按钮显示.
有什么问题?

Col*_*son 39

这是UI设计和指南的一部分.在"行动表"下,他们说:

不要包含"取消"按钮,因为人们可以在弹出框之外点击以关闭操作表而不选择其他选项之一.

看起来SDK会故意隐藏按钮.我不确定是否有解决方案,但也许您可以添加自己的按钮并设置cancelButtonIndex匹配.或者你可以切换到UIAlertView.


小智 1

我能够通过设置 actionSheetStyle 解决这个问题:

actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
Run Code Online (Sandbox Code Playgroud)

UIActionSheetStyleBlackTranslucent 也适用。我正在从模态视图控制器显示操作表,我猜它在技术上不是像指南所说的“弹出控制器”,但在操作表上看不到“取消”按钮,当它出现在模态视图顶部时看起来不正确。用户看到的只是一个可怕的红色按钮,没有可见的替代按钮。

也许我可以将模式视图控制器更改为弹出控制器,但这样它就不会是它需要的模式。

- 更新 -

嗯,虽然它持续的时候很有趣,但在 iOS 4.2 中不再有效。
我改用 UIAlertView 而不是 UIActionSheet。
我不再有一个很酷的红色按钮,但它可以完成工作。