NSOpenPanel を閉じる方法を理解するのに苦労しています。自動的に閉じますが、必要以上に時間がかかります。
これが私のコードです:
- (IBAction)startProcess:(id)sender
{
NSString *path = [Document openVideoFile]; // open file
// some other method calls here
}
// NSOpenPanel for file picking
+(NSString*) openVideoFile
{
NSOpenPanel *openDialog = [NSOpenPanel openPanel];
//set array of the file types
NSArray *fileTypesArray = [[NSArray alloc] arrayWithObjects:@"mp4", nil];
[openDialog setCanChooseFiles:YES];
[openDialog setAllowedFileTypes:fileTypesArray];
[openDialog setAllowsMultipleSelection:FALSE];
if ([openDialog runModal] == NSFileHandlingPanelOKButton)
{
NSArray *files = [openDialog URLs];
return [[files objectAtIndex:0] path];
}
else
{
return @"cancelled";
}
return nil; // shouldn't be reached
}
興味深いことに、ユーザーが「キャンセル」をクリックすると、パネルはすぐに閉じますが、ユーザーがリストからファイルを選択すると、プログラムが startProcess メソッドの最後に到達するまでパネルは開いたままになります。
ユーザーがファイルを選択した後に [OK] ボタンをクリックした後、すぐにパネルを閉じる方法を誰かが知っていれば、助けていただければ幸いです。
ありがとうございました!