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

由于新版SDK已发布(iOS 6),因此不推荐使用UIDocumentInteractionControllerDelegate的委托方法documentInteractionController:canPerformAction: UIDocumentInteractionControllerDelegate

使用该方法,您可以防止像print:copy:这样的默认操作出现。

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

我读了UIDocumentInteractionController及其委托的可用文档,我无法find另一种方法来做我在canPerformAction方法中做的事情。

有任何想法吗?

作为一个加号,能够过滤像邮件或推特(默认出现)的应用程序将是一件好事,但我想这是不可能的。

我想这是因为苹果希望你使用新的UIActivity控件。

这里是文档:

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

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

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

这个问题解决了你如何能够创造自己的UIActivity

https://stackoverflow.com/a/12766330/736384

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

 [activityView setExcludedActivityTypes:[NSArray arrayWithObjects:UIActivityTypeCopyToPasteboard, UIActivityTypePrint, nil]]; 

所有的默认活动都列在苹果文档链接的底部。

同意在代表中弃用“可以表演”是麻烦的事实,我们失去了我们曾经拥有的优良的粮食控制权。

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

即为您的UIDocumentInteractionController使用presentOpenInMenuFromBarButtonItem:animated:presentOpenInMenuFromRect:inView:animated:

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

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