0

使うとき

NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pdf", @"PDF", nil];
NSInteger result    = [openPanel runModalForTypes:fileTypes];

期待どおりに動作します(PDFファイルのみを選択できます)が、

NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"pdf", @"PDF", nil];
[openPanel setAllowedFileTypes:fileTypes];
NSInteger result    = [openPanel runModal];

PDFだけでなく、すべての種類のファイルを選択できます。ドキュメントには、runModalForTypesは非推奨であり、2番目の方法を使用する必要があると記載されています。私は何か間違ったことをしていますか?

4

1 に答える 1

1

Mac OS X 10.6以降用にビルドしていますか?ヘッダーファイルによると、「10.6未満のバージョンでは、このプロパティは無視されます。」

それ以外の場合、コードは正しく見え(fileTypesある時点でリリースすると仮定)、私にとっては機能します(Mac OS X 10.7.2でテスト済み)。

マイナーな提案の1つは、次のようにファイル拡張子をハードコーディングする代わりに、UniformTypeIdentifierを使用してPDFを識別することです。

NSArray *fileTypes = [NSArray arrayWithObjects:(id)kUTTypePDF, nil];
于 2011-12-22T00:43:41.247 に答える