Quiero crear un conmutador personalizado para mi aplicación, en el cual proporciono tres imágenes para los posibles estados (encendido, apagado, mousedown). Toda la apariencia está contenida en las imágenes, por lo que no quiero que Cocoa resalte (oscurezca) el botón solo durante el mousedown.Personalizar un NSButtonCell con imágenes y resaltar
Por el momento, he creado una subclase NSButtonCell, he arrastrado un botón de bisel de NSButtonTypeMomentaryChange a mi vista y he configurado de forma personalizada el tipo de clase de celda de botón en mi subclase. La subclase simplemente implementa awakeFromNib para tratar de unos puso comportamiento deseado:
- (void)awakeFromNib
{
[self setShowsStateBy:NSContentsCellMask];
[self setHighlightsBy:NSContentsCellMask];
}
lo que pensé que (según la documentación) hará imposible la mousedown-oscurecimiento del botón. No es asi.
Esta es mi posición y ahora tengo dos preguntas:
- ¿Cómo puedo configurar la clase de pila de botón para mostrar sólo mi imagen preparada en mousedown y no se oscurecen/dibujar los bordes alrededor de la tecla?
- ¿Cuál sería la forma más limpia/más adecuada de implementar el otro comportamiento de un interruptor, es decir, mostrando la posición de apagado/encendido según el estado anterior y pudiendo comunicar su estado adecuadamente a otros objetos?
Eso es todo, gracias. – mss