16

新しいSDKがリリースされたため(iOS 6)、のデリゲートメソッドdocumentInteractionController:canPerformAction:UIDocumentInteractionControllerDelegate非推奨になりました。

print:その方法を使用すると、やのようなデフォルトのアクションを防ぐことができましたcopy:

このメソッドは現在のバージョンのiOS6で呼び出されていますが、将来のバージョンではこのメソッドは呼び出されず、アプリはサポートしたくないアクションを表示します。

UIDocumentInteractionControllerとそのデリゲートの利用可能なドキュメントを読みましたが、canPerformActionメソッドで行うことを行う別の方法を見つけることができません。

何か案は?

プラスとして、メールやツイッター(デフォルトで表示される)のようなアプリをフィルタリングできるのは素晴らしいことですが、これは不可能だと思います。

4

2 に答える 2

8

デリゲートでの「canPerformAction」の非推奨が面倒であるという事実に同意し、以前の細粒度の制御を失いました。

ただし、ドキュメントを別のアプリで開くことを許可するだけで、コピー、印刷、さらにはメールを削除したい場合はOpenIn、メソッドのバージョンを使用してUIDocumentInteractionController?を表示する方がよいと思います。

すなわちあなたのUIDocumentInteractionController使用のためにpresentOpenInMenuFromBarButtonItem:animated:またはpresentOpenInMenuFromRect:inView:animated:

presentOptionsMenuFromBarButtonItem:animated:またはの代わりにpresentOptionsMenuFromRect:inView:animated:

このように、デフォルトでは、ドキュメントを開くことができるアプリのみが表示され、メール、コピー、印刷は非表示になります。

于 2013-03-08T03:04:24.307 に答える
6

これは、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を作成できるかを解決します。

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

したがって、ユーザーがcopy :メソッドとprint:メソッドを使用できないようにする場合は、次のように、このアクティビティをUIActivityViewControllerに渡すだけです。

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

すべてのデフォルトのアクティビティは、Appleのドキュメントリンクの下部にリストされています。

于 2012-12-20T15:17:23.847 に答える