У меня есть приложение, в котором я использую 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
в этом респонденте, поэтому, если нет другого респондента, о котором я не знаю, я не знаю, что происходит с этим сообщением.
У кого-нибудь есть предложения?