Domanda

Ho creato una sottoclasse personalizzata di NSCell con una NSImageCell, alcuni NSTextFieldCells, ed un NSPopUpButtonCell.

Sono l'inizializzazione della cella di pop-up utilizzando:

    myPopUpCell = [[NSPopUpButtonCell alloc] init];
    [myPopUpCell setBordered:NO];
    [myPopUpCell setAutoenablesItems:NO];
    [myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3"]];

E il disegno in drawInteriorWithFrame:inView:

Tutto sembra funzionare grande, solo che quando si fa clic sulla cella pop-up durante l'esecuzione la mia app la cella non pop-up. Qualche suggerimento su quello che potrebbe essere sbagliato?

È stato utile?

Soluzione

Disegnare la pila a bottone a comparsa in drawInteriorWithFrame:inView: sta andando a fare proprio questo; disegnare, ma nient'altro. Gestione degli eventi click non è correlata al disegno, quindi si sta andando ad avere per fare un certo lavoro in cella personalizzato per interpretare gli eventi del mouse, e se sono all'interno della struttura che si sta utilizzando per il pulsante pop-up, passarli alla pila a bottone. Inizia con la sottoclasse dei metodi elencati nella documentazione NSCell sotto monitoraggio il mouse, come –trackMouse:inRect:ofView:untilMouseUp:, e si dovrebbe essere in grado di capire ciò che è necessario per fare in modo corretto l'atto pila a bottone.

A seconda di quello che stai facendo si può effettivamente trovare più facile disegnare la stringa del titolo da soli, e basta usare +popUpContextMenu:withEvent:forView: di NSMenu.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top