を使用するアプリケーションがあります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
このレスポンダーに実装しているので、私が知らない他のレスポンダーがいない限り、このメッセージがどうなるかわかりません。
誰か提案はありますか?