2012-09-25 21 views
16

由於新SDK已發佈(iOS 6),因此不建議使用UIDocumentInteractionControllerDelegate的代理方法documentInteractionController:canPerformAction:Open in + UIDocumentInteractionController:如何篩選SDK iOS 6中的選項(不推薦使用canPerformActions)

使用該方法,您可以防止出現像print:copy:這樣的默認操作。

該方法在當前版本的iOS 6中被調用,但在未來版本中,此方法不會被調用,並且我的應用程序將顯示我不想支持的操作。

我讀了UIDocumentInteractionController及其委託的可用文檔,我無法找到另一種方法來做我在canPerformAction方法中做的事情。

任何想法?

作爲一個優點,能夠過濾像郵件或推特(默認出現)這樣的應用程序會很棒,但我想這是不可能的。

回答

6

我認爲這是因爲蘋果希望你使用新的控件。

這是文檔:

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

這是開發,以支持許多第三方應用程序自定義控制:

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

而且這個問題解決了,你怎麼能讓你自己UIActivity

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

所以,如果你不想讓用戶可以使用副本:打印:方法只是通過這個活動向UIActivityViewController,像這樣:

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

所有默認活動列在Apple文檔鏈接的底部。

+0

嘿..感謝你的回答!我沒有看到即將到來的jaja,我會深入研究這一點,但一眼看來,它似乎是未來。再次感謝! – Omer

+12

so ...如果這是真的,你將如何在另一個應用程序(目前正在處理UIDocumentInteractionController的openWith ...和QuickLookPreview?)中打開一個文件。 AFAICS在UIActivityViewController中沒有這方面的支持(除了UIActivityViewController也有一些非常嚴格的限制) – auco

+5

同意auco - 你現在怎麼打開... xlxs或類似的iOS6? – Rossi

7

同意在代表中棄用'canPerformAction'很麻煩,我們失去了我們曾經擁有的細粒度控制。但是,如果你只想讓文檔在另一個應用中打開,並且想要刪除複製,打印甚至是郵件,我想你最好用OpenIn版本的方法來呈現UIDocumentInteractionController

即您UIDocumentInteractionController使用presentOpenInMenuFromBarButtonItem:animated:presentOpenInMenuFromRect:inView:animated:

(的presentOptionsMenuFromBarButtonItem:animated:presentOptionsMenuFromRect:inView:animated:代替)

這樣,在默認情況下,它只會顯示的應用程序,可以打開你的文件,並隱藏郵件,複製和打印。

+1

這種方式使剩下的選項也不可用(FB,Twitter等)。如果有人想要OpenIn和FB ..會怎麼樣? – Vive

+0

在模擬器上可能沒有安裝的應用程序來打開內容,菜單不會顯示。看到這個問答:http://stackoverflow.com/questions/23624218/presentopeninmenuubarbarbuttonitem-doesnt-cause-menu-to-appear – Suragch

+0

它不會使其他選項不可用btw。例如,目前它只是分享給Instagram的唯一方式。 iOS應用程序間共享/通信的悲哀狀態。 –