ipad 上的操作表

Posted

技术标签:

【中文标题】ipad 上的操作表【英文标题】:Actionsheet on ipad 【发布时间】:2013-02-12 11:12:54 【问题描述】:

此代码在 iPhone 上运行良好,但在 iPad 上,操作表显示在屏幕中间。不在触发按钮所在的角落。也没有显示取消按钮。

此外,该应用程序仅处于横向模式。相机触发按钮位于屏幕右上角。

mediaPicker = [[UIImagePickerController alloc] init];
mediaPicker.allowsEditing = YES;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil
                                                             delegate:self
                                                    cancelButtonTitle:@"Cancel"
                                               destructiveButtonTitle:nil
                                                    otherButtonTitles:@"Take photo", @"Choose Existing", nil];
    //[actionSheet showInView:self.view];
    [actionSheet showInView:self.navigationController.view];

// If device doesn't has a camera, Only "Choose Existing" and "Cancel" options will show up.
else 
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil
                                                             delegate:self
                                                    cancelButtonTitle:@"Cancel"
                                               destructiveButtonTitle:nil
                                                    otherButtonTitles:@"Choose Existing", nil];
    [actionSheet showInView:self.view];

我需要操作表来显示按钮所在的位置。我该怎么办。

【问题讨论】:

【参考方案1】:

IPAD 对actionsheets 及其取消按钮有一些特殊规则,这通常取决于您在哪里显示actionsheets 来自

您可以显示来自UIToolbarUITabBarUIBarButtonItem 或来自UIView 的操作表。在确定如何呈现操作表时,此类会考虑起始视图和当前平台。对于在 iPhone 和 iPod touch 设备上运行的应用程序,操作表通常从拥有视图的窗口底部向上滑动。 对于在 iPad 设备上运行的应用程序,操作表通常显示在以适当方式锚定到起始视图的弹出窗口中。在弹出框外点击会自动关闭操作表,在任何自定义按钮内点击也是如此。您也可以通过编程方式将其关闭。

在 iPad 上显示操作表时,有时您不应该包含取消按钮。如果您只显示操作表,系统会在弹出框内显示操作表而不使用动画。因为在弹出框外点击会关闭操作表而不选择项目,这会导致默认方式取消工作表。因此,包括取消按钮只会引起混乱。但是,如果您有一个现有的弹出框并且正在使用动画在其他内容之上显示一个操作表,那么取消按钮仍然是合适的

不要使用showInView,而是尝试使用其中一种方法

[actionSheet showFromBarButtonItem:barItem animated:YES];

解释是here & here

【讨论】:

【参考方案2】:

在 iPad 上,不要使用 showInView:。相反,请使用其他更具体的方法之一来显示操作表,例如 showFromBarButtonItem:animated:

如 nsgulliver 的回答中所述,操作表在 iPad 上不显示“取消”按钮是正常的。用户需要做的就是在操作表之外点击。这被视为与取消相同。

【讨论】:

谢谢 rmaddy。它不是一个条形按钮,它是一个自定义框架。有没有办法以更通用的方式触发它。我正在考虑制作一个自定义 popoverController。你认为这是个好主意吗? 这只是一个例子。您可以在 iPad 上使用任何其他 showXXX 方法。 showInView: 通常用于 iPhone。

以上是关于ipad 上的操作表的主要内容,如果未能解决你的问题,请参考以下文章

ipad 上的操作表

移动操作系统、android 和 ipad 上的 Javascript

当用户触摸弹出框外部时,禁用 ipad 上的 ActionSheet 关闭

在 iPad 上的 UIWebView 中定位弹出框

怎么取消ipad上的home键

Excel VBA 评估另一张工作表中的公式