Открыть в + UIDocumentInteractionController: как фильтровать параметры в SDK iOS 6 (canPerformActions устарел)
Поскольку новый SDK был выпущен (iOS 6), метод делегата documentInteractionController:canPerformAction:
UIDocumentInteractionControllerDelegate
устарел.
Используя этот метод, вы смогли предотвратить действия по умолчанию, такие как print:
и copy:
.
Метод вызывается в текущей версии iOS 6, но в будущих версиях этот метод не будет вызываться, и мое приложение покажет действия, которые я не хочу поддерживать.
Я прочитал доступную документацию для UIDocumentInteractionController и ее делегата, и я не могу найти другой способ сделать то, что я делаю в методе canPerformAction.
Любые идеи?
В качестве плюса было бы здорово фильтровать такие приложения, как почта или твиттер (что появляется по умолчанию), но я думаю, что это невозможно.
Ответы
Ответ 1
Я думаю, это потому, что 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:
fooobar.com/questions/88895/...
Итак, если вы не хотите, чтобы пользователь мог использовать copy: и print: методы просто передают эти действия в UIActivityViewController, например:
[activityView setExcludedActivityTypes:[NSArray arrayWithObjects:UIActivityTypeCopyToPasteboard, UIActivityTypePrint, nil]];
Все действия по умолчанию перечислены в нижней части ссылки документации Apple.
Ответ 2
Согласился на то, что неудобство "canPerformAction" в делегате является хлопотным, мы потеряли контроль мелкого зерна, который у нас был.
Однако, если вы хотите только разрешить открытие документа в другом приложении и хотите удалить Copy, Print и даже Mail, я думаю, вам лучше использовать версию метода OpenIn
для представления UIDocumentInteractionController
?
то есть. для вашего UIDocumentInteractionController
используйте presentOpenInMenuFromBarButtonItem:animated:
или presentOpenInMenuFromRect:inView:animated:
(вместо presentOptionsMenuFromBarButtonItem:animated:
или presentOptionsMenuFromRect:inView:animated:
)
Таким образом, по умолчанию он будет показывать приложения, которые могут открыть ваш документ, и скрывает почту, копию и печать.