Ich habe einen NSPopUpButton, der das NSMenu für ein Statuselement mit einer benutzerdefinierten Ansicht bereitstellt. Die Popup-Schaltfläche zeigt eine Liste von Links an. Wenn der Benutzer einen Link aus der Liste auswählt, wird der Link im Browser des Benutzers angezeigt (im Hintergrund).Wie kann ich einen NSPopUpButton geöffnet lassen, nachdem der Benutzer einen Menüeintrag ausgewählt hat?
Natürlich schließt das Menü jedes Mal, wenn der Benutzer einen Link auswählt.
Ich möchte das ändern: Ich möchte das Menü geöffnet bleiben, während der Benutzer auf verschiedene Links klickt, die alle im Hintergrund geöffnet werden können. Das Menü kann dann verschwinden, wenn der Benutzer auf eine andere Stelle klickt.
Wie kann dies erreicht werden? Sollte ich NSMenuItem ableiten und die Mausklicks irgendwie abfangen? Overlay ein transparentes NSView auf dem Popup-Menü und wiederum die Klicks irgendwie abfangen? Ich mache diese Vorschläge munter, aber ich hätte Schwierigkeiten, diese beiden zu implementieren ... Zeiger auf die richtigen Methoden zum Überschreiben wären willkommen.
Danke für den Kommentar. Ich würde sicherlich überlegen, meine eigene Unterklasse von NSView zu schreiben. Es verhält sich jedoch wie ein königlicher Schmerz, um sich mit allen Untermenüs, Bildern, Ein/Aus-Zuständen usw., die mit der NSPopUpButtonCell/NSMenu-Kombination geliefert werden, kostenlos zu befassen. Also ... Ich weiß, dass das Schreiben meiner eigenen NSView eine Möglichkeit ist, dies zu tun, aber ich denke ehrlich gesagt, wenn ich NSPopUpButton exakt imitiere, aber nur das Verhalten ändere, das ich ändern möchte - dann könnte ich genauso gut weitermachen und "beuge [die] Kontrolle zu weit hinter seiner ursprünglichen Absicht"! Ich meine, das Ergebnis ist dasselbe, so dass es sinnlos erscheint, auf einer Zeremonie zu stehen. – Dennis