Frage

Ich habe eine OpenGL -GUI -Schnittstelle und muss ein Popup -Menü haben, das aufgerufen wird, wenn diese Taste in meinem OpenGL -Display gedrückt wird. Ich möchte ein Menü anstellen, das dem ähnlich ist, das beim Drücken eines Nspopupbuttons auftaucht, aber ich kann die Kakao -Taste nicht selbst verwenden. Es scheint, dass der beste Weg, dies zu erreichen, die Nspopupbuttoncell verwenden kann. Ich kann meinen Code hier nicht veröffentlichen, weil ich den Code in Lisp schreibe und über eine objektive C -Brücke auf den Kakao zugreifen kann, aber ich wollte nur sehen, ob der folgende PSEDUO -Code das Menü anzeigen sollte oder ob ein offensichtlicher Fehler in meinem vorhanden ist Logik:

• Pseudo Code for function that is called when button is pressed:
• Initialize an NSPopUpButtonCell Using initTextCell: "test" pullsDown: NO
• allocate an NSMenu using alloc
• add two menu items using addItem:
• set the menu of the popUpButtonCell to be the menu that was just allocated using setMenu:
• Next I tried two methods to try and get the menu to actually be displayed,
  first I tried using drawWithFrame:inView: and when that did not work I also tried 
  using drawBezelWithFrame:inView: eventhough the docs said not to use but I just 
  tried it out of desperation.
• finally, when the draw methods did not work I tried using performClick: on the 
  popupButtonCell to try and simulate the click.

Keine dieser Methoden war erfolgreich, um eine Art von Menü anzuzeigen. Gibt es eine andere Möglichkeit, das in der Zelle enthaltene Menü programmiert zu tauchen?

War es hilfreich?

Lösung

Ich denke, Sie suchen nach dem trackMouse:inRect:ofView:untilMouseUp: Methode von NSCell

[theCell trackMouse:[NSApp currentEvent] inRect:NSZeroRect ofView:theView untilMouseUp:YES];

Andere Tipps

Ich denke, es wäre Ihnen besser, wenn Sie eine Ebene verwenden würden NSMenu und rufen +[NSMenu popUpContextMenu:withEvent:forView:]. Wenn Sie nur auf 10.6 und später zielen, können Sie auch auschecken -[NSMenu popUpMenuPositioningItem:atLocation:inView:], was Ihnen etwas mehr Kontrolle über die Positionierung des Menüs gibt. Einfach implementieren mouseDown: Konstruieren Sie in Ihrer Ansicht ein Menü (oder laden Sie es aus einer NIB -Datei) und zeigen Sie es an und anzeigen NSMenu sollte sich um alle Details von dort kümmern. Stellen Sie einfach sicher, dass das Ziel und die Aktion für jeden NSMenuItem wird so eingestellt, dass die Aktionsmethode bei Auswahl eines Elements korrekt aufgerufen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top