私はNSFontPanel
を使用するアプリケーションを持っています。 は、私はこのようなフォントパネルを開きます。validModesForFontPanelは決して呼ばれません
NSFontManager *fontManager = [NSFontManager sharedFontManager];
[fontManager orderFrontFontPanel:self];
[fontManager setDelegate:self];
[fontManager setTarget:self];
[fontManager setAction:@selector(changeFont:)];
私は、パネルの変更をフォントに反応し-(void)changeFont:(id)sender
方法を持っています。これはすべてうまくいく。
は今、私はフォントオプションの一部を無効にしたいので、私はNSFontPanelValidation
プロトコルのvalidModesForFontPanel
方法を実装:
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
NSLog(@"validModesForFontPanel");
return NSFontPanelFaceModeMask | NSFontPanelCollectionModeMask | NSFontPanelSizeModeMask;
}
しかし、メソッドが呼び出されることは決してありませんが。ドキュメントで は、それは言う:「このメッセージは、メソッドを実装するファーストレスポンダにレスポンダチェーンを送っている理想的には、そのオブジェクトがファーストレスポンダもchangeFontが:.実装していることを見つけなければなりません。」
私はchangeFont
を実装してくださいこのレスポンダでは、私が気付いていない他のレスポンダがない限り、私はこのメッセージに何が起こるか分かりません。
誰にも提案はありますか?
こんにちはJPed、お返事ありがとうございました。すべてが「NSFontManager」を通過したことは私の理解であったが、私は間違っていたと思う。とにかく、上記のコードは 'NSFontPanel'の代理人が' NSWindowDelegate'のインスタンスでなければならず、 'self'は' NSViewController'のサブクラスであるため動作しません。 '警告:' TextViewController * const __strong 'を互換性のない型' id '' –
pajevic
のパラメータに送ります。私はそれが動作しなかったと言ったときに私は少し速かった。私が警告を受けるという事実にもかかわらず、実際にはそうです。これはあなたが遭遇したことですか? – pajevic
私はついにそれを理解しました。私のクラスが 'NSWindowDelegate'プロトコルを実装していなかったので警告が来ました。私はちょうどこれのすべてがもう少し良く文書化されたことを願っています。 D – pajevic