1

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文なしで試してみましたが、まだうまくいきません。アプリを閉じたときにパネルが表示されている場合、アプリを開くと常に再びポップアップします。また、アプリ デリゲートの appWillTerminate メソッドでフォント パネルを閉じようとしました。同じ動作。

ヒントをいただければ幸いです。前もって感謝します、

フロー

4

2 に答える 2

3

これらのメソッドをどこで呼び出していますか? それはうまくいくはずです。

-applicationDidFinishLaunching:次のように AppDelegate 通知で呼び出すことができます。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    if ([[NSFontPanel sharedFontPanel] isVisible])
        [[NSFontPanel sharedFontPanel] orderOut:self];
}
于 2012-08-31T20:18:29.933 に答える