IB の私の NSPanel では、「閉じたときにリリース」のチェックが外されています。
「起動時に表示」もチェックを外します。
次のようにNSPanelをフェードインします(dragToButtonによってアクティブ化されます)。正常に動作します
- (IBAction)dragToFile:(id)sender
{
DragImageView *accessory = [[[DragImageView alloc] initWithFrame:NSMakeRect(0,0,71,63)] autorelease];
[accessory setMainContentFolder:self.mainInstallFolder];
[self.dragToFile setFloatingPanel:YES];
[self.dragToFile makeKeyWindow];
[dragImage setMainContentFolder:self.mainInstallFolder];
NSRect frame = dragToFile.frame;
NSRect mainFrame = self.window.frame;
frame.origin.x = mainFrame.origin.x + 550;
frame.origin.y = mainFrame.origin.y + 360;
[dragToFile setFrame:frame display:NO];
//set fade anim params
NSDictionary *fadeInDict = [NSDictionary dictionaryWithObjectsAndKeys:
dragToFile, NSViewAnimationTargetKey,
NSViewAnimationFadeInEffect, NSViewAnimationEffectKey,
nil];
//create fade instance
NSViewAnimation *fadeIn = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObjects: fadeInDict, nil]];
[fadeIn startAnimation];
[fadeIn release];
しかし、ウィンドウのツールバーでウィンドウを閉じると、windowWillClose 通知から以下がトリガーされます
- (void) dragToFileWindowDidClose:(id)sender
{
[dragToFile setAlphaValue:0.0]; //make nspanel 0 alpha so it can fade in again
[dragtoButton setState:NSOffState];
}
ウィンドウは閉じますが、完全に消え、次の dragToButton のクリックでは戻りません。
NSPanel には次のプロパティがあります。
@property (retain) IBOutlet NSPanel *dragToFile;
したがって、ウィンドウが解放されていることは確かですが、そのオプションの選択を解除したため、理由はわかりません。