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]);
}
このコードは、モーダル ウィンドウ (設定ウィンドウ) 内のビュー コントローラーから呼び出されており、フォント パネルは正常に開きます。ただし、ターゲットとアクションを手動で設定しても、変更はありません。
この問題はレスポンダー チェーンに関連していますか? どうすれば修正できますか?ビュー コントローラーをレスポンダー チェーンに手動で追加する必要がありますか? どうすればいいですか?
前もって感謝します!