0

我在 IB 中的 NSPanel 未选中“关闭时释放”。

“启动时可见”也未选中。

我用以下(由dragToButton激活)淡入NSPanel,它工作正常

- (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;

所以我很确定窗口正在被释放,但我不知道为什么,因为我取消了该选项。

4

2 回答 2

0

首先尝试[dragToFile setReleasedWhenClosed:NO];手动使用。

于 2012-11-03T05:41:40.603 回答
0

感谢您的建议。我解决了。

代替[self.dragToFile makeKeyWindow];

[self.dragToFile makeKeyAndOrderFront:dragToFile];

不知道为什么这个有效而另一个无效,但它现在完美无缺。

谢谢。

于 2012-11-03T20:16:28.963 回答