在UIDocumentInteractionController中打开:如何在SDK iOS 6中过滤选项(不推荐使用canPerformActions)
由于新版SDK已发布(iOS 6),因此不推荐使用UIDocumentInteractionControllerDelegate
的委托方法documentInteractionController:canPerformAction:
UIDocumentInteractionControllerDelegate
使用该方法,您可以防止像print:
和copy:
这样的默认操作出现。
该方法在当前版本的iOS 6中被调用,但在将来的版本中,此方法将不会被调用,并且我的应用程序将显示我不想支持的操作。
我读了UIDocumentInteractionController及其委托的可用文档,我无法find另一种方法来做我在canPerformAction方法中做的事情。
有任何想法吗?
作为一个加号,能够过滤像邮件或推特(默认出现)的应用程序将是一件好事,但我想这是不可能的。
我想这是因为苹果希望你使用新的UIActivity控件。
这里是文档:
这是一个为支持许多第三方应用程序而开发的自定义控件:
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:
这样,默认情况下,它只会显示可以打开文档的应用程序,并隐藏邮件,复印和打印。