Hatena::Groupiphone-dev

iOS プログラミングメモ

2011-01-31 (Mon)

UIDocumentInteractionController で、特定の拡張子のファイルを開けるアプリがあるかどうかを調べる方法 04:42  UIDocumentInteractionController で、特定の拡張子のファイルを開けるアプリがあるかどうかを調べる方法 - iOS プログラミングメモ を含むブックマーク

任意の拡張子のファイルを開けるアプリがある時に、任意のボタンを出したりしたいじゃないですか。

結論から言うと、現時点ではこのための便利メソッドはまだないようです。

今日は、南東京iPhone開発者勉強会 5回目 というやつに参加してきました。

iPhone開発界の神`k_katsumi`氏が UIDocumentInteractionController について発表してくださるというので、これはチャンスと参加して上記の件について質問してきましたが、やっぱ無いみたいです。内部にプライベートなやつでありそうだよねーなんて話してました。

といいつつも…。いまある駒でこの要求を満たしたい場合は、以下のようにすれば一応動作することは確認しています。

+ (BOOL) hasExt:(NSString *)ext {
   NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"check.%@", ext]];
   UIDocumentInteractionController *doc =
      [UIDocumentInteractionController interactionControllerWithURL:url];
   BOOL success = [doc presentOptionsMenuFromRect:CGRectZero inView:[UIApplication sharedApplication].keyWindow animated:NO];
   if(success) [doc dismissMenuAnimated:NO];
   return success;
}

ただし、なんというか無理矢理感が非常に強いので、あんまりおすすめしません。自分のならいいけど、人のアプリの開発の場合は特に怖くて使えません。

例えば上の presentOptionsMenuFromRect を presentOpenInMenuFromRect にすると、iOS4.0 場合はメニューが表示されちゃいます。なかなか厄介な話です。

眠いから寝ます。オヤスミ。