2014-11-09 2 views
1

Я видел эту функцию в приложении с именем Moom.Как отобразить NSPopover рядом с кнопкой другого окна?

Это выглядит следующим образом: Moom capture

Есть чистый способ украсить окна в таком случае, или я должен просто создать какие-то приложение, которое случается быть только на верхней части кнопки разворачивания, прозрачный или с флагом 0x0, и создать NSPopover в этом приложении?

ответ

2

Спасибо за указатель на это приложение - выглядит очень удобно.

Как это делается. Обратите внимание, что он использует API доступности - ему нужен доступ при его установке. Приложение похоже на то, что оно настраивается как клиент Accessibility, а затем получает уведомления, когда определенные элементы пользовательского интерфейса сфокусированы (следовательно, наведение курсора мыши). См. Здесь: https://developer.apple.com/library/mac/documentation/Accessibility/Conceptual/AccessibilityMacOSX/AboutOSXAccessibility/AboutOSXAccessibility.html#//apple_ref/doc/uid/TP40001078-CH254-DontLinkElementID_18

Оттуда нетрудно создать окно оверлея, которое выравнивается с целевым элементом пользовательского интерфейса (то есть кнопкой «Масштаб»).

+0

Ссылка не работает. Не могли бы вы его обновить? –

0

Благодаря greg's anwer. Я сделал некоторые исследования и нашел это:

https://developer.apple.com/library/mac/documentation/AppKit/Reference/NSAccessibility_Protocol_Reference/index.html#//apple_ref/c/data/NSAccessibilityFocusedUIElementChangedNotification

Зарегистрируйте свое приложение в качестве клиента доступности и слушать NSAccessibilityFocusedUIElementChangedNotification. Если сфокусированный элемент пользовательского интерфейса является кнопкой масштабирования окна, тогда создайте popover в правильной позиции.

Я собираюсь попробовать это. Я буду публиковать больше, когда смогу.