【发布时间】:2011-05-28 04:36:15
【问题描述】:
我正在创建NSFontPanel,但选择字体不会调用changeFont: 方法。
我在 NSWindowController 子类中定义了这些方法:
- (IBAction)showFontPanel:(id)sender {
[[NSFontPanel sharedFontPanel] makeKeyAndOrderFront:self];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSFont *theFont = [NSFont fontWithName:[prefs stringForKey:iepFontName] size:[prefs floatForKey:iepFontSize]];
[[NSFontPanel sharedFontPanel] setPanelFont:theFont isMultiple:NO];
[[NSFontManager sharedFontManager] setDelegate:self];
}
- (void)changeFont:(id)sender {
NSLog(@"changeFont");
}
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
return NSFontPanelFaceModeMask | NSFontPanelSizeModeMask | NSFontPanelCollectionModeMask;
}
字体面板出现时选择了正确的字体和大小,并且仅在validModesForFontPanel: 中启用了模式,但是当我选择不同的字体时,changeFont: 方法不会被调用。我的理解是changeFont: 操作消息被发送到响应者链。作为测试,我在我的应用程序委托中放置了一个相同的 changeFont: 方法(它应该在响应者链中),但它也没有被调用。我在某处错过了一步吗?
【问题讨论】:
标签: cocoa nsfontpanel