ios8中的UIDocumentInteractionController presentOptionsMenuFromBarButtonItem错误 - 提供了未知活动项

ari*_*orf 20 objective-c ipad ios

UIDocumentInteractionController presentOptionsMenuFromBarButtonItem 在ios8硬件中给出了一个控制台错误(而不是7.1硬件或更早版本):

 Unknown activity items supplied: (
    {
    "com.adobe.pdf" = ;
},
""
 )

在我的应用程序的官方App Store版本中,应用程序崩溃了.当我在iPad上编译并运行时,它只是给出错误但不会崩溃.

我的代码:

在.h:

UIDocumentInteractionController *docInteractionController;
Run Code Online (Sandbox Code Playgroud)

在他们中:

self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];

self.docInteractionController.delegate = self;
//UIBarButtonItem *element is an element in my toolbar
[self.docInteractionController presentOptionsMenuFromBarButtonItem:element animated:YES];
Run Code Online (Sandbox Code Playgroud)

如果我执行NSLogdocInteractionController.UTI,我会在控制台看到"com.adobe.pdf",因此正确识别UTI.

我可以通过使用presentOpenInMenuFromBarButtonItem而不是presentOptionsMenuFromBarButtonItem为UIDocumentInteractionController调用来解决"未知活动项目",但我想向用户显示打印和电子邮件选项,而不仅仅是外部应用程序打开选项.

在iPad 8.0.2版上测试过.Xcode版本6.0.1,部署目标6.0(也使用部署目标8.0进行测试).所有目标-c.在iPad 7.1版上运行不会产生错误.

Kar*_*eye 7

见雷达:http://openradar.appspot.com/radar?id = 5800473659441152

  • 如上所述,您可以使用presentOpenInMenu而不是presentOptionsMenu.您将松开邮件选项,但您可以使用MFMailComposeViewController和专用邮件按钮自行完成.
  • 或者将UIActivityViewController与"Open In"活动项一起使用.
  • 或者只是没有"Open In"活动项目的UIActivityViewController,如果这足够的话
  • 或者iOS7运行时的presentOptionsMenu和iOS8 +运行时的UIActivityViewController(存在共享扩展)


小智 0

这为我解决了问题:

dispatch_async(dispatch_get_main_queue(), ^() {
      [_docController presentOptionsMenuFromRect:button.bounds inView:button animated:YES];              
   });
Run Code Online (Sandbox Code Playgroud)