0

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;

したがって、ウィンドウが解放されていることは確かですが、そのオプションの選択を解除したため、理由はわかりません。

4

2 に答える 2

0

あなたの提案をありがとう。私はそれを解決しました。

それ以外の[self.dragToFile makeKeyWindow];

[self.dragToFile makeKeyAndOrderFront:dragToFile];

これが機能する理由と機能しない理由はわかりませんが、現在は問題なく機能しています。

ありがとう。

于 2012-11-03T20:16:28.963 に答える
0

[dragToFile setReleasedWhenClosed:NO];まず、手動で使用してみてください。

于 2012-11-03T05:41:40.603 に答える