Открыть в + UIDocumentInteractionController: как отфильтровать параметры в SDK iOS 6 (canPerformActions устарела)

Так как новый SDK был выпущен (iOS 6), метод делегата documentInteractionController:canPerformAction: из UIDocumentInteractionControllerDelegate устарела.

Используя этот метод, вы смогли предотвратить действия по умолчанию, такие как print: а также copy: появляться.

Метод вызывается в текущей версии iOS 6, но в будущих версиях этот метод не будет вызываться, и мое приложение будет показывать действия, которые я не хочу поддерживать.

Я прочитал доступную документацию для UIDocumentInteractionController и его делегата, и я не могу найти другой способ сделать то, что я делаю в методе canPerformAction.

Есть идеи?

Плюс, было бы здорово иметь возможность фильтровать приложения, такие как почта или твиттер (который появляется по умолчанию), но я думаю, что это невозможно.

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:

/questions/27908243/kak-ya-mogu-sozdat-polzovatelskuyu-uiactivity-v-ios/27908250#27908250

Итак, если вы не хотите, чтобы пользователь мог использовать методы copy: и print:, просто передайте эти действия в UIActivityViewController, например так:

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

Все действия по умолчанию перечислены в нижней части ссылки на документацию Apple.

Согласившись с тем, что отмена "canPerformAction" в делегате является проблематичной, мы утратили тот элемент управления, который раньше был точным.

Однако, если все, что вам нужно, это разрешить открытие документа в другом приложении, и вы хотите удалить Копировать, Распечатать и даже Почту, я думаю, вам лучше использовать OpenIn версия метода для представления UIDocumentInteractionController?

т.е. для вашего UIDocumentInteractionController использование presentOpenInMenuFromBarButtonItem:animated: или же presentOpenInMenuFromRect:inView:animated:

(вместо presentOptionsMenuFromBarButtonItem:animated: или же presentOptionsMenuFromRect:inView:animated:)

Таким образом, по умолчанию будут отображаться только те приложения, которые могут открыть ваш документ, и будут скрыты Почта, Копирование и Печать.

Другие вопросы по тегам