ValidModesForFontPanel nunca llamado
-
28-10-2019 - |
Pregunta
Tengo una aplicación donde uso el NSFontPanel
. Abro el panel de fuentes así:
NSFontManager *fontManager = [NSFontManager sharedFontManager];
[fontManager orderFrontFontPanel:self];
[fontManager setDelegate:self];
[fontManager setTarget:self];
[fontManager setAction:@selector(changeFont:)];
Entonces tengo un -(void)changeFont:(id)sender
Método que reacciona a los cambios de fuente en el panel. Todo esto funciona bien.
Ahora, quiero deshabilitar algunas de las opciones de fuentes, por lo que implemento el validModesForFontPanel
método del NSFontPanelValidation
protocolo:
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
NSLog(@"validModesForFontPanel");
return NSFontPanelFaceModeMask | NSFontPanelCollectionModeMask | NSFontPanelSizeModeMask;
}
Sin embargo, el método nunca se llama. En la documentación dice: "Este mensaje se envía a la cadena de respondedores al primer respondedor que implementa el método. Idealmente, ese objeto debe ser el primer respondedor que también implementa ChangeFont:."
Yo implemento changeFont
En este respondedor, por lo tanto, a menos que haya algún otro respondedor que no conozca, no sé qué sucede con este mensaje.
¿Alguien tiene alguna sugerencia?
Solución
No indica ningún respondedor para el panel, solo para el gerente.
Esto debería hacerlo:
NSFontPanel* fontPanel = [fontManager fontPanel:YES];
[fontPanel setDelegate:self];
[fontPanel makeKeyAndOrderFront:sender];