Открыть в + UIDocumentInteractionController: как отфильтровать параметры в SDK iOS 6 (canPerformActions устарела)
Так как новый SDK был выпущен (iOS 6), метод делегата documentInteractionController:canPerformAction:
из UIDocumentInteractionControllerDelegate
устарела.
Используя этот метод, вы смогли предотвратить действия по умолчанию, такие как print:
а также copy:
появляться.
Метод вызывается в текущей версии iOS 6, но в будущих версиях этот метод не будет вызываться, и мое приложение будет показывать действия, которые я не хочу поддерживать.
Я прочитал доступную документацию для UIDocumentInteractionController и его делегата, и я не могу найти другой способ сделать то, что я делаю в методе canPerformAction.
Есть идеи?
Плюс, было бы здорово иметь возможность фильтровать приложения, такие как почта или твиттер (который появляется по умолчанию), но я думаю, что это невозможно.
2 ответа
Я думаю, это потому, что Apple хочет, чтобы вы использовали новый элемент управления UIActivity.
Вот это документация:
Вот пользовательский элемент управления, разработанный для поддержки многих сторонних приложений:
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:
)
Таким образом, по умолчанию будут отображаться только те приложения, которые могут открыть ваш документ, и будут скрыты Почта, Копирование и Печать.