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?

War es hilfreich?

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];    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top