在+ UIDocumentInteractionController中打开:如何过滤iOS iOS 6中的选项(不推荐使用canPerformActions)

Ome*_*mer 16 iphone ipad ios uidocumentinteraction ios6

由于新的SDK是释放(iOS 6中),委托方法documentInteractionController:canPerformAction:UIDocumentInteractionControllerDelegate已弃用.

使用该方法,你能阻止默认操作,如print:copy:出现.

该方法在当前版本的iOS 6中调用,但在将来的版本中,此方法将不会被调用,我的应用程序将显示我不想支持的操作.

我阅读了UIDocumentInteractionController及其委托的可用文档,我无法找到另一种方法来执行我在canPerformAction方法中所做的工作.

有任何想法吗?

作为一个加号,能够过滤邮件或推特等应用程序(默认情况下显示)会很棒,但我想这是不可能的.

P.L*_*.L. 8

同意在委托中弃用'canPerformAction'很麻烦,我们失去了以前的细粒度控制.

但是,如果你想要的只是允许在另一个应用程序中打开文档,并想要删除复制,打印甚至邮件,我想你最好使用OpenIn方法版本来呈现UIDocumentInteractionController

即供您UIDocumentInteractionController使用presentOpenInMenuFromBarButtonItem:animated:presentOpenInMenuFromRect:inView:animated:

(而不是presentOptionsMenuFromBarButtonItem:animated:presentOptionsMenuFromRect:inView:animated:)

这样,默认情况下,它只会显示可以打开文档的应用程序,并隐藏邮件,复制和打印.


Lui*_*rbe 6

我认为这是因为Apple希望您使用新的UIActivity控件.

这是文档:

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIActivity_Class/Reference/Reference.html

这是为支持许多第三方应用而开发的自定义控件:

http://www.cocoacontrols.com/platforms/ios/controls/uiactivitycollection

这个问题解决了你如何制定自己的UIActivity:

/sf/answers/893643131/

所以,如果你不希望用户可以使用copy:print:方法只是将这些活动传递给UIActivityViewController,如下所示:

[activityView setExcludedActivityTypes:[NSArray arrayWithObjects:UIActivityTypeCopyToPasteboard, UIActivityTypePrint, nil]];
Run Code Online (Sandbox Code Playgroud)

所有默认活动都列在Apple文档链接的底部.

  • 所以...如果这是真的,你将如何在另一个应用程序中打开一个文件(目前正在使用UIDocumentInteractionController的openWith ...和QuickLookPreview?).AFAICS在UIActivityViewController中不支持这个(除了UIActivityViewController还有一些非常严格的限制) (12认同)
  • 同意auco - 你现在如何在... xlxs或iOS6中打开? (5认同)