Search code examples
iphoneiosipadios6uidocumentinteraction

Open in + UIDocumentInteractionController : how to filter options in SDK iOS 6 (canPerformActions is deprecated)


Since the new SDK was release (iOS 6), the delegate method documentInteractionController:canPerformAction: of the UIDocumentInteractionControllerDelegate is deprecated.

Using that method you were able to prevent default actions like print: and copy: to appear.

The method is being called in the current version of iOS 6, but in future versions this method will not be called and my app will show actions that I don't want to support.

I read the available documentation for the UIDocumentInteractionController and its delegate and I'm not able to find a another way to do what I do in the canPerformAction method.

Any ideas?

As a plus, it would be great to be able to filter apps like mail or twitter (that appears by default) but I guess that this is not possible.


Solution

  • I think it is because Apple wants you to use the new UIActivity control.

    Here it's the documentation:

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

    Here it's a custom control developed to support many third party apps:

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

    And this question solves how could you make your own UIActivity:

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

    So, if you don't want the user can use copy: and print: methods just pass this activities to the UIActivityViewController, like this:

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

    All the default activities are listed at the bottom of the Apple's documentation link.