[M1 Mac, Big Sur 11.6.5, clang 13.0.0, no Xcode]
前回の続きです。
AppDelegateファイルを作成以降は以下の流れになります。
1.Drag & Dropを設定しているNSViewクラスのconcludeDragOperationメソッドにDropしたファイルのパスについて処理内容を記述する。
2.NSAppクラスのorderedWindowsメソッドでNSWindowの配列をディスプレイ表示順にて取得する。
3.先頭のNSWindowを選択し、setIsVisibleメソッドで非表示に設定する。
4.[alloc init]で新しいNSWindowを作成する。
5.NSWindow内のTextFieldにファイルパスを入力する。
念のため消費メモリを確認しましたが、特に異常はありませんでした。ただ何らかの弊害が発生する可能性はあります。
コードは以下の通りです。
<該当箇所のみ>
@implementation DragAndDropView
// ドロップ完了後の処理
- (void)concludeDragOperation:(id <NSDraggingInfo>)sender{
NSPasteboard *pboard = [sender draggingPasteboard];
NSString *fileURL = [[NSURL URLFromPasteboard:pboard] path];
NSLog(@"fileURL %@",fileURL);
// NSAppのWindowをディスプレイ表示順に並べた配列を作成
NSArray *windowsArray = [NSApp orderedWindows];
NSLog(@"windowsArray %@", windowsArray);
// 先頭のWindowを非表示にする(操作しているため、このAppが常に先頭)
NSWindow *currentWindow = [windowsArray objectAtIndex:0];
[currentWindow setIsVisible:NO];
//新たにAppのWindowを作成
ConvertorWindow *newWindow = [[ConvertorWindow alloc] init];
[[newWindow autorelease] makeMainWindow];
// Window内のtextBox1にファイルパスを入力する
newWindow->textBox1.stringValue = fileURL;
}
@end