質問

使用するアプリケーションがあります 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];    
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top