Según Apple's Developer Documentation, puede utilizar construido en panecillos de OS X con la clase incorporada NSPopover:
A partir de OS X v10.7, AppKit proporciona soporte para los panecillos por medio de la Clase NSPopover. Un popover proporciona un medio para mostrar contenido adicional relacionado con el contenido existente en la pantalla. La vista que contiene el contenido existente, a partir de la cual surge el popover, se denomina en este contexto como una vista de posicionamiento. Utiliza un anclaje para expresar la relación entre un popover y su vista de posicionamiento.
Aquí hay un enlace al NSPopover class. También puede ver un ejemplo de NSPopovers utilizados en la aplicación Calendario (10.7+) y la aplicación Safari (10.8+). La imagen siguiente muestra un popover en la aplicación Calendario (izquierda) y Safari (derecha):
continuación se describe cómo configurar una NSPopover, es muy simple y se puede hacer sobre todo en constructor de interfaces .
- Agregue un elemento de NSPopover a su XIB en el generador de interfaz. Esto creará el NSPopover y su controlador de vista.
- A continuación, arrastre un NSView personalizado en su XIB a través del constructor de interfaz. Esta será la vista para el controlador de vista popover
- Personaliza tu NSView con los controles que necesita en su popover
En el archivo de cabecera (.h) añadir las siguientes dos líneas de código:
@property (assign) IBOutlet NSPopover *popover;
- (IBAction)showPopover:(id)sender;
No olvide conectar la salida y la acción a su interfaz.
- En su aplicación, sintetizar el popover y añadir el método para
showPopover
En el método showPopover
, agregue esta línea para mostrar el popover:
[[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];
Es a usted a la figura cómo descartar el popover; porque qué divertido es copiar/pegar? Puede hacerlo manualmente (sugerencia: intente usar close
) o cambie la propiedad behavior
y haga que el sistema lo haga (vea la edición a continuación).
¡Buena suerte, espero que esto ayude!
Editar
Como señaló David in his comment:
Otra posibilidad para despedir el popover es fijar su comportamiento a transitoria. Esto permite al usuario hacer clic en cualquier lugar fuera del popover para que desaparezca
La propiedad de comportamiento de un popover establece cómo aparece y desaparece. Existen tres comportamientos:
NSPopoverBehaviorApplicationDefined
- (predeterminado) Su aplicación debe cerrar la popover sí
NSPopoverBehaviorTransient
- El popover se cierra cuando cualquier elemento de la interfaz se interactuó con fuera del popover
NSPopoverBehaviorSemitransient
- El popover es cerrado cuando cualquier elemento de la interfaz en la vista de presentación del popover se interactúa con fuera del popover.
Lea más acerca de esto en Apple's Documentation.
+1 para esto. Me ha funcionado bien, y también es posible llevarlo al iPhone con un cambio de nombre. –
Muchas gracias, lo verificaré y marcaré su respuesta como aceptada si me funciona. – brutella
Funciona como un encanto;) – brutella