在应用程序启动时无法隐藏NSFontPanel

时间:2012-08-27 10:44:24

标签: objective-c cocoa nswindow nspanel

我正在为我的应用程序创建一个功能,我想使用NSFontPanel。 我不想在我的应用程序中使用“字体”菜单。

单击菜单项时打开和关闭字体面板就像那样

- (IBAction) showOverlayControls:(id)sender
{
    if ( [[NSFontPanel sharedFontPanel] isVisible])
    {
        NSLog(@"Test");
        [[NSFontPanel sharedFontPanel] orderOut:self];
    }
    else
    {
        NSFontManager* fontMgr = [NSFontManager sharedFontManager];
        [fontMgr setTarget:self];

        NSFontPanel* fontPanel = [NSFontPanel sharedFontPanel];
        [fontPanel orderFront:self];
    }
}

一切正常。 当我尝试在应用程序启动时关闭字体面板以防它显示时出现问题。我试过了

if ( [[NSFontPanel sharedFontPanel] isVisible] )
    [[NSFontPanel sharedFontPanel] close];

if ( [[NSFontPanel sharedFontPanel] isVisible] )
    [[NSFontPanel sharedFontPanel] orderOut:self];

我也在没有if语句的情况下尝试过,但仍然没有运气。 如果应用程序关闭时显示面板,则在打开应用程序时它会再次弹出。 我还试图在我的app delegate的appWillTerminate方法中关闭字体面板。 同样的行为。

会感激任何提示。 提前谢谢,

弗洛

1 个答案:

答案 0 :(得分:3)

你在哪里调用这些方法?它必须工作。

您可以在AppDelegate -applicationDidFinishLaunching:通知中调用它:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    if ([[NSFontPanel sharedFontPanel] isVisible])
        [[NSFontPanel sharedFontPanel] orderOut:self];
}