Question

J'ai une application où j'utilise le NSFontPanel. J'ouvre le panneau de police comme ceci:

NSFontManager *fontManager = [NSFontManager sharedFontManager];
[fontManager orderFrontFontPanel:self];
[fontManager setDelegate:self];
[fontManager setTarget:self];
[fontManager setAction:@selector(changeFont:)];

J'ai alors une méthode -(void)changeFont:(id)sender qui réagit aux changements de police dans le panneau. Tout cela fonctionne bien.

Maintenant, je veux désactiver certaines des options de police, donc je mets en œuvre la méthode validModesForFontPanel du protocole NSFontPanelValidation:

- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
    NSLog(@"validModesForFontPanel");
    return NSFontPanelFaceModeMask | NSFontPanelCollectionModeMask | NSFontPanelSizeModeMask;
}

Cependant, la méthode est jamais appelé. Dans la documentation, il dit: « Ce message est envoyé à la chaîne de répondeur au premier intervenant implémentant la méthode Idéalement cet objet doit être le premier intervenant a révélé que met également en œuvre changeFont:.. »

Je Ænglisc changeFont dans ce répondeur, donc à moins d'un autre intervenant que je ne suis pas au courant, je ne sais pas ce qui se passe à ce message.

Quelqu'un at-il des suggestions?

Était-ce utile?

La solution

Vous arent indiquant tout répondeur pour le panneau, juste pour le gestionnaire.
cela devrait le faire:

NSFontPanel* fontPanel = [fontManager fontPanel:YES];
[fontPanel setDelegate:self];    
[fontPanel makeKeyAndOrderFront:sender];    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top