LSUIElement = 1을 사용하는 배경 응용 프로그램에 몇 가지 문제가 있습니다. Command-Tab 응용 프로그램 전환기에 나타나지 않도록하십시오.Snow Leopard 및 LSUIElement -> 응용 프로그램이 제대로 활성화되지 않았습니다. "키"임에도 불구하고 "활성"창이 아닙니다.
스노우 레오파드에만 문제가있는 것 같습니다.
응용 프로그램은 메뉴 막대에 NSStatusItem을 놓고 클릭하면 메뉴를 팝업합니다. "환경 설정 ..."을 선택하면 환경 설정이있는 NSWindow가 나타나야합니다.
첫 번째로 작동하지 않는 것은 윈도우가 앞쪽에 정렬되지 않지만 다른 모든 응용 프로그램 창 뒤에 나타남을들 수 있습니다.
나는[[NSApplication sharedApplication] activateIgnoringOtherApps: YES]
를 호출하여이 문제를 해결하려하지만, 작동하지 않았다.
[자기 performSelector : 나는 메뉴가 전송되는 실행 루프에 메시지를 차단하고, 그래서이 MainController에 다른 방법을 쓰고 지연 메시지를 보낸 것으로 파악 잠시 후
@ 선택기 (setFront :) withObject : [preferencesController 창] afterDelay : 1.0];
-(void)setFront: (id) theWindow {
[[NSApplication sharedApplication]activateIgnoringOtherApps:YES];
[theWindow orderFrontRegardless];
[theWindow makeKeyWindow];
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
}
메시지 보내기 - 할 일 - 할 일 -해야할 일 - 접근 방식에주의하십시오.
이 기능은 모든 응용 프로그램의 다른 모든 창의 맨 위에있는 창을 맨 앞으로 가져옵니다. 그러나 대부분의 경우 활성화되어 있지 않으므로 제목 표시 줄이 회색으로 표시됩니다. 제목 표시 줄을 클릭해도 창이 활성화되지 않습니다. 창의 안쪽을 클릭하면 활성화됩니다!?
이 모든 것이 Leopard에서 문제가되지 않은 것 같습니다. activateIgnoringOtherApps를 호출하고 윈도우 키를 제대로 작동시키는 것처럼 보였습니다. '나는 그와 함께 주위를 해본 적이
http://developer.apple.com/mac/library/releasenotes/cocoa/appkit.html
하지만, SL 전용 및 I의 천국입니다 : 스노우 레오파드 (Snow Leopard)에서
는 동작을 에뮬레이트하도록되어 LSUIElement을 대체하기위한 새로운 API가 LSUIElement를 설정할 수있었습니다.
당신이하려는 일은 초점을 훔치는 것으로 인식 될 수 있습니다. 그리고 그것은 좋은 일입니다. 당신의 메뉴는 무엇을합니까? '[preferencesController showWindow :]'? – zneak
사용자가 "환경 설정 ..."을 선택하고 환경 설정 윈도우를 앞쪽으로 정렬하여 키로 지정할 때 포커스를 훔치는 일은 거의 없습니다. 그렇지만 사과에있는 훌륭한 사람들은 그렇게하지 못하게하려고합니다. –