我正在为我的应用程序创建一个功能,我想使用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方法中关闭字体面板。 同样的行为。
会感激任何提示。 提前谢谢,
弗洛
答案 0 :(得分:3)
你在哪里调用这些方法?它必须工作。
您可以在AppDelegate -applicationDidFinishLaunching:
通知中调用它:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
if ([[NSFontPanel sharedFontPanel] isVisible])
[[NSFontPanel sharedFontPanel] orderOut:self];
}