3

出于测试目的,我编写了两个应用程序:

  • 第一个使用播放 MP3 文件UIDocumentInteractionController
  • 第二个什么都不做,只是注册文件类型“ public.mp3

如果我将应用程序部署到iPhone模拟器,我的 MP3 播放器应用程序会在顶部显示一个按钮“在 'MP3Test' 中打开”。但是,如果我部署到iPad模拟器,则没有按钮,也没有“打开方式”菜单。

这已经在 iOS5 上测试过了。

有人可以解释这是错误还是功能以及背后的原因是什么?

4

3 回答 3

2

取决于你从哪里展示它。

如果您从屏幕中间或下方的某处呈现它,只需从您正在呈现的对象的框架中呈现。

如果那在导航栏上,试试这个:

NSString *fileToOpen = [[NSBundle mainBundle] pathForResource:@"License" ofType:@"pdf"];
UIDocumentInteractionController *controller = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:fileToOpen]];
controller.delegate = self;

CGRect navRect = self.navigationController.navigationBar.frame;
navRect.size = CGSizeMake(1500.0f, 40.0f);
[controller presentOptionsMenuFromRect:navRect inView:self.view animated:YES];
于 2012-02-13T23:28:26.147 回答
0

iPad 对弹出框有亲和力(请参阅UIPopover),为什么它会在其中显示UIActionSheet。面对您遇到的类似问题,我让我的 UIDocumentInteractionController 从 UIBarButtonItem 呈现自己(导致 UIPopover 演示),而不是从视图本身(在 iPhone 上工作得很好):

  1. 保存对操作按钮的引用(我的导航栏中有我的)。

  2. 使用操作按钮引用而不是 View 引用来使用 PresentOpenInMenu,从而生成 UIPopover 演示文稿。

请注意,此更改不会影响 iPhone 应用程序 - 它的行为与以前一样,即从屏幕底部打开 OpenInMenu 就像您使用 View 引用来呈现它一样。

于 2013-01-12T00:06:54.597 回答
-1

在 iPad 上 UIDocumentInteractionController 看起来像 Pop Up 尝试这样的事情

-(void)shareClick:(UIButton*)sender {
   /*some code*/
   CGRect rectFor appearing = [sender.superview convertRect:sender.frame toView:self.view];
   [interactionController presentOptionsMenuFromRect:rect inView:self.view animated:YES];
}
于 2013-12-22T01:10:50.817 回答