質問: this; if (!dic.PresentOpenInMenu(new CGRect(0, 0, 500, 500), View, true)) { Console.WriteLine("ファイルに対応するアプリがありません", this); } } } } ``` ▼UIDocumentInteractionControllerが表示されたところ([Acrobatにコピー]をクリック) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/aa1169e5175018ebc63b4ea7c482fdd0.png) ▼Adobe Acrobat Readerを起動して取り消し線を入れた後に、右上のメニューを見て「もしかして戻れないんじゃないか」と思い始めたところ ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/ab8f8a9bed20de3791fc0d65c1859b95.png) ◆開発環境 ▼実機デバイス iPad 9.7インチ Wi-Fiモデル 32GB MRJN2J/A ▼Windows 10 Visual Studio Community 2017 Version 15.9.11 Xamarin 4.12.3.83 Xamarin.iOS and Xamarin.Mac SDK 12.4.0.64 ▼Mac mini(Late 2014) macOS Majave 10.14.4 Xcode 10.2.1 以下編集前の質問文============================================ ~~タイトルの通りですが、 アプリからPDFを外部ビューアで起動し、ファイルが変更されたことを元のアプリが検知することはできるでしょうか? ★環境 iOS 12以上 objective-c、swift、xamarinなど言語は問いません。~~
回答: こんにちは。 まずは、ドキュメントをフォルダを公開し、直接編集を許可する必要があるようです。 iOS 11ファイルAppにDocumentsフォルダを表示して他のアプリと共有する方法 これで自分のドキュメントフォルダのPDFファイルをファイルアプリからAcrobat Readerアプリを使って直接編集できることをまずは確認してください(チェックポイント1)。 次に、UIDocumentInteractionControllerのイニシャライザに自分のドキュメントフォルダのPDFファイルを渡してpresentOptionsMenuします。 この時に表示されるUIは自分の環境では安定しなかったのですが、 「Copy to Acrobat」と表示される場合と、「Open In Actobat」と表示されるときと2パターンありました(ちょっと端末にベータ入れてるせいもあると思うので原因はわかりませんが、一度Copy Toをタップしたあとだと何故かOpen Inに変わったりしました)。 「Open In Acrobat」をタップすると、Acrobat Readerアプリが立ち上がり、編集終了後に「ファイル」アプリを使ってPDFファイルが更新されていることを確認してください(チェックポイント2)。 ここまで動けば、あとはドキュメントフォルダの監視をするだけです。 NSFileCoordinator/NSFilePresenterを使ってディレクトリ監視 を参考にしてください。 手元で試した感じではAcrobat側が更新するとpresentedSubitemDidChange(at:)が呼ばれるようでした。 ここで変更を検出できればゴールかと思います。