Question

J'ai créé une sous-classe personnalisée de NSCell avec un NSImageCell, quelques NSTextFieldCells, et un NSPopUpButtonCell.

Je suis initialiser la cellule pop-up en utilisant:

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

Et le dessin dans drawInteriorWithFrame:inView:

Tout semble fonctionner très bien, sauf que lorsque vous cliquez sur la cellule pop-up lors de l'exécution de mon application la cellule ne se déclenche pas. Toutes les suggestions sur ce qui pourrait être erroné?

Était-ce utile?

La solution

Dessin de la pile bouton pop-up dans drawInteriorWithFrame:inView: va faire exactement cela; dessiner, mais rien d'autre. Gestion des événements de clic est sans rapport avec le dessin, vous êtes donc devoir faire un travail dans votre cellule personnalisée pour interpréter les événements de la souris, et si elles sont à l'intérieur du cadre que vous utilisez pour le bouton pop-up, les transmettre à la pile bouton. Commencez par les méthodes énumérées sous-classement dans les docs NSCell sous le suivi de la souris, comme –trackMouse:inRect:ofView:untilMouseUp:, et vous devriez être en mesure de comprendre ce qui est nécessaire pour faire la loi sur la pile bouton correctement.

En fonction de ce que vous faites vous pouvez réellement trouver plus facile de dessiner la chaîne de titre vous-même, et il suffit d'utiliser la +popUpContextMenu:withEvent:forView: de NSMenu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top