我有一个使用NSFontPanel
. 我像这样打开字体面板:
NSFontManager *fontManager = [NSFontManager sharedFontManager];
[fontManager orderFrontFontPanel:self];
[fontManager setDelegate:self];
[fontManager setTarget:self];
[fontManager setAction:@selector(changeFont:)];
然后我有一种-(void)changeFont:(id)sender
方法可以对面板中的字体更改做出反应。这一切都很好。
现在,我想禁用一些字体选项,所以我实现了协议的validModesForFontPanel
方法:NSFontPanelValidation
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
NSLog(@"validModesForFontPanel");
return NSFontPanelFaceModeMask | NSFontPanelCollectionModeMask | NSFontPanelSizeModeMask;
}
但是,该方法永远不会被调用。在文档中它说:“此消息通过响应者链向上发送到实现该方法的第一个响应者。理想情况下,该对象应该是找到的第一个响应者,它也实现了 changeFont:。 ”
我确实changeFont
在这个响应者中实现,所以除非有其他我不知道的响应者,否则我不知道这条消息会发生什么。
有没有人有什么建议?