在 + UIDocumentInteractionController 中打开:如何在 SDK iOS 6 中过滤选项(不推荐使用 canPerformActions)
Posted
技术标签:
【中文标题】在 + UIDocumentInteractionController 中打开:如何在 SDK iOS 6 中过滤选项(不推荐使用 canPerformActions)【英文标题】:Open in + UIDocumentInteractionController : how to filter options in SDK iOS 6 (canPerformActions is deprecated) 【发布时间】:2012-09-25 22:13:35 【问题描述】:自从新的 SDK 发布 (ios 6) 以来,UIDocumentInteractionControllerDelegate
的委托方法 documentInteractionController:canPerformAction:
已弃用。
使用该方法,您可以防止出现 print:
和 copy:
等默认操作。
当前版本的 iOS 6 中正在调用该方法,但在未来版本中将不会调用该方法,并且我的应用将显示我不想支持的操作。
我阅读了 UIDocumentInteractionController 及其委托的可用文档,但我无法找到另一种方法来执行我在 canPerformAction 方法中所做的工作。
有什么想法吗?
作为一个优点,能够过滤邮件或推特(默认显示)等应用程序会很棒,但我想这是不可能的。
【问题讨论】:
【参考方案1】:同意在委托中弃用“canPerformAction”很麻烦这一事实,我们失去了过去的细粒度控制。
但是,如果您只想允许在另一个应用程序中打开文档,并且想要删除复制、打印甚至邮件,我想您最好使用OpenIn
版本的方法来呈现@987654323 @?
即为您的UIDocumentInteractionController
使用presentOpenInMenuFromBarButtonItem:animated:
或presentOpenInMenuFromRect:inView:animated:
(而不是presentOptionsMenuFromBarButtonItem:animated:
或presentOptionsMenuFromRect:inView:animated:
)
这样,默认情况下,它只会显示可以打开您的文档的应用程序,而隐藏邮件、复制和打印。
【讨论】:
这种方式使其他选项也无法使用(FB、Twitter 等)。如果有人想拥有 OpenIn 和 FB.. 怎么办? 在模拟器上可能没有安装应用程序打开内容,菜单不会显示。请参阅此问答:***.com/questions/23624218/… 顺便说一句,它不会使其他选项不可用。例如,这是目前分享到 Instagram 的唯一方式。 iOS 应用间共享/通信的悲惨状态。【参考方案2】:我认为这是因为 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:
https://***.com/a/12766330/736384
所以,如果您不希望用户可以使用 copy: 和 print: 方法,只需将此活动传递给 UIActivityViewController,像这样:
[activityView setExcludedActivityTypes:[NSArray arrayWithObjects:UIActivityTypeCopyToPasteboard, UIActivityTypePrint, nil]];
所有默认活动都列在 Apple 文档链接的底部。
【讨论】:
嘿..谢谢你的回答!我没有看到即将到来的jaja我会深入研究这个,但乍一看它似乎是未来。再次感谢! so...如果这是真的,您将如何在另一个应用程序中打开文件(当前使用 UIDocumentInteractionController 的 openWith... 和 QuickLookPreview?)。 AFAICS 在 UIActivityViewController 中不支持此功能(除了 UIActivityViewController 也有一些非常严重的限制) 同意 auco - 你现在如何用 iOS6 打开... xlxs 或类似的?以上是关于在 + UIDocumentInteractionController 中打开:如何在 SDK iOS 6 中过滤选项(不推荐使用 canPerformActions)的主要内容,如果未能解决你的问题,请参考以下文章
NOIP 2015 & SDOI 2016 Round1 & CTSC 2016 & SDOI2016 Round2游记