validModesforfontpanelは呼ばれませんでした
-
28-10-2019 - |
質問
使用するアプリケーションがあります 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を実装する最初のResponderである必要があります。"
私は実装しています changeFont
このレスポンダーでは、私が知らない他のレスポンダーがない限り、このメッセージに何が起こるかわかりません。
誰かが何か提案はありますか?
解決
マネージャーのためだけに、パネルのレスポンダーを示しています。
これはそれをする必要があります:
NSFontPanel* fontPanel = [fontManager fontPanel:YES];
[fontPanel setDelegate:self];
[fontPanel makeKeyAndOrderFront:sender];
所属していません StackOverflow