Pregunta

Todos ustedes conocen la barra de menú (o, mejor dicho, NSStatusBar) en Mac OS X.
Hay algunos elementos que puedo mover y otros que no.

Me gustaría poder arrastrar el NSStatusItem de mi aplicación.

¿Alguna idea de cómo implementar esto?

¿Fue útil?

Solución

Aunque NSStatusItems aparece cerca del menú interno "extras de menú" de Apple, son distintos y se comportan de manera diferente. Sería bueno si Apple unificara los elementos que pueden aparecer en el área de la derecha de la barra de menú, pero por ahora la sección está dividida en "" apple internal" " (a la derecha), y " proporcionado por la aplicación (NSStatusItem) " a la izquierda.

Puedes visualizar la distinción poniendo tu computadora en modo de captura de pantalla (cmd-shift-4) y presionando la barra espaciadora para cambiar a "capturar toda la ventana". Cuando pasas el cursor sobre los íconos del menú de Apple, verás que todos viven en una sola ventana. Esto explica su capacidad para ser manejados y arrastrados fácilmente. Al pasar por encima de los demás elementos, se revela que cada NSStatusItem está viviendo en una sola ventana propia (que es propiedad de la aplicación que lo instaló).

Es mejor seguir con NSStatusItem aunque no puedas arrastrarlos. Es un defecto de Apple que la mayoría de los usuarios entenderán, incluso si es molesto. Enfatizar las ventajas y desventajas positivas de ofrecer una aplicación más estable a largo plazo generalmente suavizará las opiniones de sus clientes (¿o gerentes?) Que están presionando por la capacidad de arrastre.

Otros consejos

Tendrá que usar NSMenuExtra , no < codifique> NSStatusItem , y convierta el elemento de menú en un paquete que se ejecute dentro del proceso SystemUIServer , no en su propia aplicación. También necesitará un código como el suministrado por MenuCracker para que esto funcione.

NSMenuExtra no está documentado ni tiene soporte, por lo que se considera un " hack " ;.

Supongo que hay dos API en primer lugar: un menú extra (o pérdida de memoria) significa que todo el proceso de SystemUIServer se cuelga o pérdida de memoria, incluidos otros módulos de terceros y los suministrados por el sistema. Por otro lado, con un elemento de estado, tal problema solo afectaría su propio código.

A partir de macOS Sierra 10.12 http://www.macworld.co.uk/how-to/mac-software/7-sierra-menu-bar-tips-how -use-mac-menu-bar-in-macos-sierra-3649163 /

  

Las aplicaciones de terceros a veces se instalan como extras del menú, tienen controles que existen en la barra de menús o se pueden volver a iniciar como aplicaciones sin rostro a pesar de que inicialmente no lo son. A partir de macOS Sierra, estos extras del menú se pueden reorganizar igual que los nativos. (Este no fue el caso a través de OS X El Capitán.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top