2009-06-16 2 views
0

this guide을 사용하여 테스트 전체 화면 응용 프로그램을 만들고 있습니다. 그러나 키 입력을 얻으 려 할 때 문제가 발생합니다.전체 화면 키 작동

어떤 이유로 화면을 차지하도록 NSPanel을 설정할 때 키 다운 이벤트를 가져 오는 기능이 손실되는 것으로 보입니다. 사용자가 s을 입력하면 일반 버튼 패널에서 정상적으로 작동하지만 버튼 변경을 시도했지만이 변경 사항이 적용되었을 때 작동하지 않는 것으로 나타났습니다. 이 적용되었습니다.

답변

0

달성 할 수 있습니다. 하위 클래스 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];  
} 
+0

해리 요르단 :처럼 내 보인다. :)이 경우 NSWindow를 사용하는 것이 더 좋습니까? 내 앱이 표준 UI를 사용하는지는 확실치 않지만 실제로는 그렇지 않다고 생각합니다. 그래서,이 경우, 간단히 -canBecomeKeyWindow를 서브 클래스 화하고 -acceptsFirstResponder 메소드를 모두 TRUE로 리턴해야합니다. – PF1

+0

NSPanel을 사용하는 주된 이유는 일반적으로 룩 (얇은 제목 표시 줄)과 이벤트 및 다른 윈도우 (즉, 플로팅)와 상호 작용하는 방식입니다. 기본적으로 하위 패널에서 특별히 요청하지 않는 한 패널은 응용 프로그램 키 창이되지 않습니다. NSPanel을 사용해야하는 경우 panelsKeyKeyInlyIfNeeded 특성을 FALSE로 설정하여이 기본값을 극복 할 수 있습니다. 그러나 짧은 대답은 NSWindow를 사용하는 것이 좋습니다. –

+0

해리 : 귀하의 응답을 읽은 후 NSWindow 사용을 매우 고려하고 있습니다. 그러나이 상황에서 작동하는지 모르겠습니다. 어쨌든 도움을 주셔서 감사합니다. 이제 문제가 해결되었습니다. – PF1