validModeSforfontpanel nie angerufen
-
28-10-2019 - |
Frage
Ich habe eine Anwendung, in der ich die verwende NSFontPanel
. Ich öffne das Schriftfeld wie folgt:
NSFontManager *fontManager = [NSFontManager sharedFontManager];
[fontManager orderFrontFontPanel:self];
[fontManager setDelegate:self];
[fontManager setTarget:self];
[fontManager setAction:@selector(changeFont:)];
Ich habe dann eine -(void)changeFont:(id)sender
Methode, die auf Schriftveränderungen im Panel reagiert. Das alles funktioniert gut.
Jetzt möchte ich einige der Schriftartoptionen deaktivieren, also implementiere ich die validModesForFontPanel
Methode der NSFontPanelValidation
Protokoll:
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
NSLog(@"validModesForFontPanel");
return NSFontPanelFaceModeMask | NSFontPanelCollectionModeMask | NSFontPanelSizeModeMask;
}
Die Methode wird jedoch nie aufgerufen. In der Dokumentation heißt es: "Diese Nachricht wird die Responder -Kette an den Ersthelfer gesendet, der die Methode implementiert. Idealerweise sollte dieses Objekt der Ersthelfer sein, der auch ChangeFont implementiert:."
Ich implementiere changeFont
In diesem Responder, es sei denn, es gibt einen anderen Responder, den ich nicht bewusst bin, weiß ich nicht, was mit dieser Nachricht passiert.
Hat jemand irgendwelche Vorschläge?
Lösung
Sie geben keinem Responder für das Panel an, nur für den Manager.
Dies sollte es tun:
NSFontPanel* fontPanel = [fontManager fontPanel:YES];
[fontPanel setDelegate:self];
[fontPanel makeKeyAndOrderFront:sender];