달성 할 수 있습니다. 하위 클래스 NSPanel
(창을 사용하지 않는 이유가 무엇입니까?) -canBecomeKeyWindow
과 패널 및 해당 contentView
의 -acceptsFirstResponder
메서드가 모두 TRUE를 반환하는지 확인하십시오.
비표준 UI (예 : 게임)를 사용하는 앱을 디자인하는 경우 시도 할 수있는 낮은 수준의 방법은 NSApplication
의 -메소드를 하위 클래스로 만드는 것입니다. 그게 전체 화면 앱에 대한 튜토리얼에서 할 말 때문에 내가있는 NSPanel을 사용하고 :
- (void)sendEvent:(NSEvent *)event
{
id delegate = [self delegate];
if(([event type] != NSAppKitDefined) && [delegate shouldHandleEvents] && [delegate respondsToSelector:@selector(handleEvent:)])
[delegate handleEvent:event];
else
[super sendEvent:event];
}
해리 요르단 :처럼 내 보인다. :)이 경우 NSWindow를 사용하는 것이 더 좋습니까? 내 앱이 표준 UI를 사용하는지는 확실치 않지만 실제로는 그렇지 않다고 생각합니다. 그래서,이 경우, 간단히 -canBecomeKeyWindow를 서브 클래스 화하고 -acceptsFirstResponder 메소드를 모두 TRUE로 리턴해야합니다. – PF1
NSPanel을 사용하는 주된 이유는 일반적으로 룩 (얇은 제목 표시 줄)과 이벤트 및 다른 윈도우 (즉, 플로팅)와 상호 작용하는 방식입니다. 기본적으로 하위 패널에서 특별히 요청하지 않는 한 패널은 응용 프로그램 키 창이되지 않습니다. NSPanel을 사용해야하는 경우 panelsKeyKeyInlyIfNeeded 특성을 FALSE로 설정하여이 기본값을 극복 할 수 있습니다. 그러나 짧은 대답은 NSWindow를 사용하는 것이 좋습니다. –
해리 : 귀하의 응답을 읽은 후 NSWindow 사용을 매우 고려하고 있습니다. 그러나이 상황에서 작동하는지 모르겠습니다. 어쨌든 도움을 주셔서 감사합니다. 이제 문제가 해결되었습니다. – PF1