UIActivityViewControllerでActivityの選択後に処理をする

UIActivityItemProviderを継承したクラスを作って-itemをoverrideする。以上。

普通に使ってたら-activityViewController:itemForActivityType:オーバーライドして、いろいろゴニョゴニョしてからreturnしてやればいいんだけど、ここに入る前に何かしたい場合は、別の方法を取る必要がある。

-itemはセカンドスレッドで呼ばれるので、中で同期処理しても大丈夫。ただそのままだとUIはいじれないのでdispatch_async(dispatch_get_main_queue(), ^{});とかでProgressHUD表示とかしてやればいいと思う。

なんか仕事でコード書いてて、-activityViewController:itemForActivityType:でなんかする前になんかする必要があったから、この方法を取った気がするんだけど、何が問題だったか覚えてない。

gin0606/DoSomethingBeforeSharing · GitHub