3

此代码在 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];
}

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

4

2 回答 2

8

IPAD 有一些关于actionsheets取消按钮的特殊规则,这通常取决于您在哪里actionsheets显示

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

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

而不是使用showInView这些方法之一的尝试使用

[actionSheet showFromBarButtonItem:barItem animated:YES];

解释在这里这里

于 2013-02-26T20:35:20.630 回答
2

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

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

于 2013-02-26T20:41:52.117 回答