这段代码在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];
}我需要动作单来显示按钮的位置。我该怎么做呢?
发布于 2013-02-27 04:35:21
关于actionsheets和取消按钮,IPAD有一些特殊的规则,这通常取决于你在哪里显示actionsheets
您可以显示UIToolbar、UITabBar、UIBarButtonItem或UIView中的动作单。在确定如何显示操作表时,此类会将起始视图和当前平台考虑在内。对于在iPhone和iPod触控设备上运行的应用程序,操作表单通常会从拥有视图的窗口底部向上滑动。对于在iPad设备上运行的应用程序,操作表通常显示在以适当方式锚定到起始视图的弹出窗口中。在弹出窗口外点击会自动关闭操作表,就像在任何自定义按钮内点击一样。您也可以通过编程方式关闭它。
在iPad上显示动作单时,有时不应包含取消按钮。如果仅演示操作工作表,系统将在弹出窗口中显示操作工作表,而不使用动画。由于在弹出窗口外轻击可在不选择项目的情况下取消操作表,因此这将导致默认的取消工作表的方式。因此,包含cancel按钮只会造成混乱。但是,如果您有一个现有的弹出窗口,并且正在使用动画在其他内容的顶部显示操作表,则仍然适合使用取消按钮
不使用showInView,而是尝试使用这些方法中的一种
[actionSheet showFromBarButtonItem:barItem animated:YES];解释是here & here
发布于 2013-02-27 04:41:52
在iPad上,不要使用showInView:。相反,可以使用其他更具体的方法来显示操作表,例如showFromBarButtonItem:animated:。
正如在nsgulliver的回答中所指出的,在iPad上不显示取消按钮是正常的。所有用户需要做的就是在操作表之外点击。这与取消的处理方式相同。
https://stackoverflow.com/questions/15098660
复制相似问题