我正在尝试在我的 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]);
}
正在从模式窗口(首选项窗口)内的视图控制器调用此代码,并且字体面板打开得很好。但是,尽管我手动设置了目标和操作,但我没有得到任何更改。
这个问题与响应者链有关吗?我该如何解决?我是否需要手动将视图控制器添加到响应者链中?我该怎么做?
提前致谢!