2011-08-23 3 views
1

NSStatusItem (NSStatusItem setMenu:(NSMenu *)menu 통해)과 함께 표시되는 전경 응용 프로그램이 있습니다. 그러나 라이온의 전체 화면 모드 (Safari)에서 다른 앱을 볼 때이 메뉴가 표시되지 않습니다.NSStatusItem 메뉴가 사자 전체 화면 앱에 나타나지 않습니다.

나는 나는 그것이 Info.plist 파일 (또는 NSUIElement)에서 true로 NSBGOnly를 설정하여 작업을 할 수 있다는 것을 알고 있지만, 두 방법은 내 응용 프로그램 아이콘이 작업 전환기에서 사라지게 할뿐만 아니라 I가 관리하면 메인 메뉴를 숨 깁니다 내 애플 리케이션을 집중.

마지막으로, true로 NSUIElement 설정을 시도하고 시작할 때 내 응용 프로그램에서 다음을 수행했다 (또한 How to hide the Dock icon 참조)

ProcessSerialNumber psn = { 0, kCurrentProcess }; 
TransformProcessType(&psn, kProcessTransformToForegroundApplication); 

이 도구 모음은 도크 아이콘 있지만 원래뿐만 아니라 다시 나타 만들어 문제 (상태 항목 메뉴가 다른 전체 화면 앱에 표시되지 않음)가 다시 표시됩니다. 내가 무엇을 시도하든 나는 이길 수 없다.

의견을 보내 주시면 대단히 감사하겠습니다.

답변

1

불행히도 나는 이것이 예상 된 행동이라고 생각합니다. 앱이 전경 앱으로 간주되므로 다른 앱이 전체 화면으로 표시되는 동안 모든 UI가 사용 중지됩니다. 포 그라운드 앱의 상태 항목을 전체 화면 모드의 다른 앱에서 계속 사용할 수 있다고 생각되면 버그를 신고해야합니다.

아마도 가장 좋은 해결책은 앱을 두 부분으로 나누는 것입니다. LSUIElement이 true로 설정된 에이전트 앱은 상태 항목과 메뉴를 만들고 관리하며, 대부분의 작업을 수행하는 주 전경 앱입니다 에이전트 앱을 실행하고 관리합니다.

Distributed Objects 또는 Apple Events와 같이 두 앱이 서로 이야기하는 데 사용할 수있는 다양한 프로세스 간 통신 방법이 있습니다.

+0

감사합니다. 나는 그렇게 될 것이라고 두려워했습니다. 이 두 객체를 하나의'.app' 파일로 패키징하는 방법이 있습니까? 그렇지 않으면 사용자가 2 개의 .apps를 자신의 응용 프로그램 폴더로 드래그하거나'.pkg' 파일을 만들 필요가있을 때 그것은 멍청 할 것입니다. – RaB

+0

예, 기본 앱 래퍼 내에 도우미 도구를 저장할 수 있습니다. 기본적으로 에이전트 앱을 자체 타겟으로 구축 한 다음 Xcode의 파일 복사 빌드 단계를 사용하여 메인 애플리케이션 번들의 AppPackage.app/Contents/Resources 폴더에 복사합니다. –

+0

보관 용 애플리케이션은 정상적으로 작동하는 것 같습니다. 또한 시스템의 트레이 메뉴도 표시됩니다. – PnotNP

관련 문제