Pergunta

Todos vocês conhecem a barra de menu (ou melhor dito NSStatusBar) em Mac OS X.
Existem alguns itens que eu posso mover e outro que não.

Eu gostaria de ser capaz de arrastar o NSStatusItem do meu aplicativo.

Qualquer idéia de como implementar isso?

Foi útil?

Solução

Embora NSStatusItems aparecer perto internos "do menu extras" da Apple, eles são distintos e se comportam de forma diferente. Seria bom se a Apple unificou os itens que podem aparecer na área do lado direito da barra de menu, mas por enquanto a seção é dividida em distintas "apple interna" (à direita), e "fornecido pelo aplicativo (NSStatusItem) "à esquerda.

Você pode visualizar a distinção, colocando o computador no modo de captura de tela (cmd-shift-4), e pressionar a barra de espaço para mudar para "capturar janela inteira". Quando você passa o mouse sobre os ícones do menu da Apple, você verá que todos eles vivem em uma única janela. Isso explica a sua capacidade de ser facilmente gerenciadas e arrastou cerca. Pairando sobre os outros itens revela que cada NSStatusItem é de fato vivendo em uma única janela própria (que passa a ser de propriedade do aplicativo que o instalou).

É melhor ficar com NSStatusItem mesmo que você não pode arrastá-los. É uma lacuna da Apple que a maioria dos usuários vai entender, mesmo que seja irritante. Enfatizando as compensações positivas de oferecer uma aplicação mais estável a longo prazo geralmente suavizar as opiniões dos seus clientes (ou gerentes?) Que estão empurrando para o draggability.

Outras dicas

Você terá que usar NSMenuExtra , não NSStatusItem, e fazer o item de menu um agrupar execução dentro do processo SystemUIServer, não o seu próprio aplicativo. Você também vai precisar de um código como esse fornecido pela MenuCracker de chegar a este trabalho.

NSMenuExtra não é documentado e sem suporte e, portanto, considerado um "hack".

Meu palpite para lá sendo duas APIs em primeiro lugar: a quebrando extra de menu (ou memória vazando) significa toda a queda processo SystemUIServer ou vazamento de memória - incluindo outros módulos de terceiros, bem como aqueles fornecidos pelo sistema. Com um item de status, por outro lado, um problema tão grande que só afetam o seu próprio 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 do bar-in-macos-sierra-3649163 /

aplicativos

terceiro partido, por vezes, instalar como extras do menu, tem controles que existem na barra de menu, ou pode ser relançado como aplicativos sem rosto apesar de não ser inicialmente lo. A partir de MacOS Sierra, estes extras do menu podem ser reorganizadas assim como os nativos. (Este não era o caso até OS X El Capitan.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top