Nach Angaben von Apples Dokumentation für Entwickler können Sie unter OS X mit der eingebauten Klasse NSPopover eingebaute Popovers verwenden:
Ab OS X v10.7 bietet AppKit mit der Klasse NSPopover Unterstützung für Popover. Ein Popover bietet die Möglichkeit, zusätzliche Inhalte in Verbindung mit vorhandenen Inhalten auf dem Bildschirm anzuzeigen. Die Ansicht, die den vorhandenen Inhalt enthält und aus der das Popover hervorgeht, wird in diesem Zusammenhang als Positionierungsansicht bezeichnet. Sie verwenden einen Anker, um die Beziehung zwischen einem Popover und seiner Positionierungsansicht auszudrücken.
Hier ist ein Link zum NSPopover-Klasse . Sie können auch ein Beispiel für NSPopovers sehen, das in der Kalender-App (10.7+) und der Safari-App (10.8+) verwendet wird. Das Bild unten zeigt ein Popover in der Kalender-App (links) und in Safari (rechts):
Hier wird beschrieben, wie man einen NSPopover einrichtet. Es ist sehr einfach und kann größtenteils im Interface Builder erledigt werden.
-
Fügen Sie ein NSPopover Item zu Ihrer XIB im Interface Builder hinzu. Dadurch werden der NSPopover und sein View-Controller erstellt.
-
Als nächstes ziehen Sie eine benutzerdefinierte NSView über den Interface Builder in Ihre XIB. Dies wird die Ansicht für den Popover View Controller sein
-
Passen Sie Ihre NSView mit allen Steuerelementen an, die Sie in Ihrem Popover benötigen
-
Fügen Sie in Ihrer Header-Datei (.h) die folgenden zwei Codezeilen ein:
@property (assign) IBOutlet NSPopover *popover;
- (IBAction)showPopover:(id)sender;
Vergessen Sie nicht, sowohl die Steckdose als auch die Aktion mit Ihrer Schnittstelle zu verbinden.
-
Synthetisieren Sie in Ihrer Implementierung das Popover und fügen Sie die Methode für showPopover
-
In der showPopover
Methode fügen Sie diese Zeile hinzu, um das Popover anzuzeigen:
[[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];
Es liegt an Ihnen, herauszufinden, wie Sie das Popup-Fenster schließen können, denn was macht es schon, zu kopieren oder einzufügen? Sie können es entweder manuell tun (Tipp: Versuchen Sie es mit close
) oder ändern Sie die behavior
Eigenschaft und lassen Sie das System dies tun (siehe untenstehende Bearbeitung).
Viel Glück, ich hoffe, das hilft!
Modifier
Wie bereits von David in seinem Kommentar :
Eine weitere Möglichkeit, das Popover zu schließen, besteht darin, sein Verhalten auf Vorübergehend . So kann der Benutzer auf eine beliebige Stelle außerhalb des Popovers klicken, damit es verschwindet
Die Verhaltenseigenschaft eines Popovers legt fest, wie es erscheint und verschwindet. Es gibt drei Verhaltensweisen:
NSPopoverBehaviorApplicationDefined
- (Standard) Ihre Anwendung muss das Popover selbst schließen
NSPopoverBehaviorTransient
- Das Popover wird geschlossen, wenn außerhalb des Popovers mit einem Oberflächenelement interagiert wird
NSPopoverBehaviorSemitransient
- Das Popover wird geschlossen, wenn ein beliebiges Schnittstellenelement der Popover-Ansicht außerhalb des Popovers interagiert wird.
Lesen Sie mehr darüber in Apples Dokumentation .