2017-12-20 5 views
0

스토리 보드를 사용하여 Mac 앱을 개발 중입니다. 나는 그 내용으로 NSViewController을 제시하는 창을 가지고 있는데,이 창은 NSSplitViewController을 내장 한 "container view controller"를 포함하고있다. NSSplitViewController는, 제 응답기에 toggleSidebar 액션을 트리거하는 메뉴 항목이 실제로 사이드로 표시 년대 NSSplitViewController의 항목을 축소되도록 리스폰 체인의 일부로하는내장 된 뷰 컨트롤러를 응답 체인의 일부로 만드는 방법은 무엇입니까?

enter image description here

예상되는 동작이며 .

그러나 이것은 단순히 발생하지 않고 메뉴 항목은 비활성화 된 상태로 유지됩니다. 그래서 내 질문은, 어떻게 할 수 - NSSplitViewController 응답 체인의 일부가 될까?

답변

0

nextReponsder 속성은 NSResponder입니다. 이 속성은 응답 체인을 정의합니다. 일반적으로 Cocoa 프레임 워크에 정의 된 리스폰 더 변경을 따르기 위해 자동으로 설정되지만 체인을 다른 방향으로 삽입/건너 뛰기/전환하기 위해 변경할 수 있습니다.

예를 들어, 어떤 시점에서 (코코아는 나에게 질문하지 않음), 코코아는 윈도우의 컨트롤러를 응답기 체인에 포함하기 시작했습니다.

- (void)windowDidLoad 
{ 
    // Sent when the controller's window has been loaded from the nib 
    [super windowDidLoad]; 
    NSWindow* window = self.window; 

    // Make sure this window controller is in the responder chain 
    NSResponder* nextResponder = window.nextResponder; // get our window's next responder 
    if (nextResponder!=self) 
     { 
     // running earlier OS X that does not include the window controller in the chain: patch us in 
     self.nextResponder = nextResponder; 
     window.nextResponder = self; 
     } 

-windowDidLoad , -viewDidLoad-awakeFromNib들이 포함되도록 리스폰 더 체인을 조정하는 모든 좋은 장소, 또는 내 응용 프로그램은 맥 OS의 모든 버전에 지속적으로 작동 할 수 있도록,이 내 방 창문의 컨트롤러와 같은 코드가 포함되어 있습니다 원하는 개체를 제외하십시오.

관련 문제