2

Cocoa アプリでフォント パネルを使用しようとしていますが、changeFont: メソッドを呼び出すことができません。

別のアプリで正しく動作していたので、コードをコピーして貼り付けただけですが、何らかの奇妙な理由で changeFont メソッドが呼び出されません。コードは次のとおりです。

- (IBAction)onOpenFontPanelBtnClicked:(id)sender
{
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];

    NSString* theFontName = [defaults objectForKey:DefaultFontNamePrefKey];
    NSFont* theFont = [NSFont fontWithName:theFontName size:12.0f];

    NSFontManager* fontMgr = [NSFontManager sharedFontManager];
    [fontMgr setTarget:self];
    [fontMgr setAction:@selector(changeMyCustomFont:)];

    NSFontPanel* panel = [fontMgr fontPanel:YES];
    [panel setPanelFont:theFont isMultiple:NO];
    [panel orderFront:self];
    panel.enabled = YES;

    NSLog(@"Font manager target: %@ (class: %@), action: %@", fontMgr.target, [fontMgr.target className], NSStringFromSelector(fontMgr.action));
}

- (void) changeMyCustomFont:(id)sender
{
    NSLog(@"New font: %@", [[NSFontManager sharedFontManager] selectedFont]);
}

このコードは、モーダル ウィンドウ (設定ウィンドウ) 内のビュー コントローラーから呼び出されており、フォント パネルは正常に開きます。ただし、ターゲットとアクションを手動で設定しても、変更はありません。

この問題はレスポンダー チェーンに関連していますか? どうすれば修正できますか?ビュー コントローラーをレスポンダー チェーンに手動で追加する必要がありますか? どうすればいいですか?

前もって感謝します!

4

1 に答える 1