Wie wird das Vorlagenbild des NSButton NICHT hervorgehoben, wenn darauf geklickt wird?

8

Ich habe NSButtons in jeder Zeile eines NSTableView.

Die Schaltflächenbilder werden in IB festgelegt und sind schwarze Symbole mit Alphakanal:

Die Fenster sind auf dunkel eingestellt mit:

%Vor%

Und zum normalen Modus mit:

%Vor%

Das Ziel besteht darin, dass die Schaltflächen schwarz sind, wenn das Fenster weiß ist, und weiß, wenn das Fenster dunkel ist, ohne beim Klicken zu ändern.

Im dunklen Modus, um die Farbänderung zu erreichen, setze ich die Bild "Vorlage" -Eigenschaft des Knopfes auf wahr in der NSTableCellView-Unterklasse:

%Vor%

Die Schaltflächen sind in IB wie folgt aufgebaut:

Das funktioniert gut in macOS 10.12 Sierra: Wenn das Fenster weiß ist, ändert das Klicken auf den schwarzen Button nicht seine Erscheinung und das ist perfekt.

Aber wenn das Fenster dunkel ist, macht das Klicken auf den weißen Knopf es schwarz , was in meinem Fall nicht akzeptabel ist (*). Außerdem funktioniert das Vorlagenbild in macOS 10.11 El Capitan einfach nicht.

Ok:

Geklickt, nicht ok:

Wenn Sie erneut auf die schwarze Schaltfläche klicken, wird sie wieder weiß ...

Meine Frage lautet: Wie erzwinge ich, dass der NSButton das Vorlagenbild nicht hervorhebt, wenn er angeklickt wird?

Ich dachte, dies sei wegen des Typs "Momentary Change", aber die Verwendung der anderen "momentanen" ändert nichts, und ich kann den Typ auch nicht auf "custom" setzen (IB lehnt ab).

>

Bitte beachten Sie, dass sich diese Template-Bilder in macOS 10.11 anders verhalten als in macOS 10.12. Die Kombinationen von Einstellungen, die nahtlos in Sierra funktionieren, funktionieren in El Capitan nicht. Aus diesem Grund habe ich auch ein Kopfgeld gesetzt: Ich brauche eine Lösung für beide Systeme. Wenn es keine Lösung gibt und Sie wissen warum, dann ist Ihre Erklärung auch eine akzeptable Antwort.

(*) Eine Problemumgehung ist in Sierra verfügbar, wo das Template-Image funktioniert, indem use button.cell?.setCellAttribute(.cellLightsByContents, to: 0) verwendet wird, um zu verhindern, dass die Schaltfläche beim Klicken die Farbe definitiv ändert (es gibt immer noch einen kurzen Flash). Aber in El Capitan ist der Knopf im dunklen Modus schwarz, so dass dies nicht gilt.

    
Moritz 22.05.2017, 12:25
quelle

0 Antworten

Tags und Links