8
votes

Nsbutton Fond blanc quand on clique

Lors de la création de bouton biseau cacao avec une image personnalisée et une autre image, j'ai un comportement étrange. Dans l'état pressé, le fond du bouton devient blanc. J'ajoute le bouton comme sous-vue d'une fenêtre transparente (fenêtre HUD).

J'essaie toutes les techniques que je connais: xxx

J'ai également essayé xxx

sans résultat.

Vous pouvez voir le mauvais comportement dans les captures d'écran ci-jointes:

Bouton de biseau recouvrant une fenêtre HUD: < BR>

mauvais biseau bouton arrière-plan:
mauvais bouton biseau fond


0 commentaires

4 Réponses :


2
votes

Création de bouton

unsigned int styleMask = NSTitledWindowMask 
                           | NSMiniaturizableWindowMask;
NSWindow *myWindow;
myWindow = [NSWindow alloc];
/*get the size of the button*/
NSSize buttonSize;
buttonSize = [myButton frame].size;
/*set window content rect with the size of the button, and with an origin of our choice; (100, 100)*/
NSRect rect;
rect = NSMakeRect (100, 100, 
                   buttonSize.width, 
                   buttonSize.height);

myWindow = [myWindow initWithContentRect: rect
                       styleMask: styleMask
                       backing: NSBackingStoreBuffered
                       defer: NO];
[myWindow setTitle: @"my window"];
/*replacing the default window content view with our button*/
[myWindow setContentView: myButton];


2 commentaires

Ce n'est pas clair pour moi qui est ce nswindow mywindow. Est-ce le conteneur de boutons? Dans ce cas, son rect contenu est ce que vous avez défini comme nsrect rect?


J'ai essayé cette solution et remplacer le contenu d'une fenêtre corrige le problème du fond blanc d'un Nsbutton, mais il introduit un autre problème, la mise au point de la fenêtre de clé. Cela se produit dans un cas: lorsque vous cliquez sur le bouton Fermer mais que vous ne le publiez pas (donc effectuer une simple pression sur un bouton). Dans ce cas, le NSWINDOW manipulant le bouton gagne la mise au point et la fenêtre ci-dessous (et les autres fenêtres vont se concentrer sur la mise au point. Le problème est donc que l'utilisateur doit cliquer deux fois sur une autre fenêtre (le HUD dans mon cas) avant de vous concentrer.



25
votes

Selon votre situation, cela peut également fonctionner:

Modifiez le style du bouton pour biseauté ou carré, le mode doit être réglé sur "changement momentané" et la bordure, transparent, mélangé et sélectionné doit être éteint. C'est comme ça que j'ai corrigé le problème de fond blanc sur mes boutons.


1 commentaires

Ceci est un problème sur Mac OS 10.12 mais pas sur 10.13.



1
votes

Vous devez définir le bouton de bouton: mybutton.buttonype = nsmomentarychangebutton;


0 commentaires

4
votes

Je l'ai fait fonctionner en définissant cell.highlightsby à Contenu de Condscellmask : xxx

De cette façon, le bouton est assombri lorsque vous appuyez dessus, Mais aucune place laid de laide n'apparaît. Testé uniquement à El Capitan).


1 commentaires

Vous pouvez également ajouter btn.alternateImage = myButtonalternateImage et il montrera quand le bouton enfoncé