2014-08-28 7 views
0

나는 내 응용 프로그램의 환경 설정 윈도우로 사용하고있는 일반 NSPanel 창을 가지고 있습니다. 창을 닫을 때마다 호출하는 선택기가 있습니다. 선택기의 목적은 사용자가 선택한 환경 설정의 상태를 저장하는 것입니다 ("저장"단추가 없음).포커스를 잃어 NSPanel이 닫히는 것을 감지하는 방법은 무엇입니까? 예 : 사용자가 NSPanel (Window?) 외부를 클릭하면

닫기 선택기를 호출하도록 쉽게 설정할 수있는 NSButton ("CLOSE")이 있습니다.

NSButton *closeButton = [[self window] standardWindowButton:NSWindowCloseButton]; 
[closeButton setTarget:self]; 
[closeButton setAction:@selector(myCloseSelector:)]; 

이 완벽하게 작동합니다 : 나의 선택은 또한 사용자가 수행하여있는 NSPanel의 왼쪽 상단에있는 빨간색 X를 클릭 할 때 호출되도록

나는 그것을 설정합니다. 그래도 내 문제는? 은 NSPanel의 바깥 쪽을 클릭하면 닫힙니다. 예 : 그들이 마우스를 가져 와서 팝업 된 NSPanel 아래의 브라우저 창을 클릭하면. 또한 창을 닫습니다.

NSPanel이 초점을 잃고 종료되는 것을 어떻게 잡을 수 있습니까? 이 문제가 발생하면 셀렉터가 호출되도록해야합니다.

감사합니다.

답변

1

NSWindowController를 NSWindowDelegate의 위임자로 만들었습니다.

myWindowController.h

@interface myWindowController : NSWindowController <NSWindowDelegate> 

다음 내있는 NSPanel의 대리인으로 myWindowController을 설정합니다.

- (void) windowDidResignKey:(NSNotification *)notification { 
    NSLog(@"Houston...we lost a panel."); 
} 

를 모든 것이 순조롭게 작동합니다

은 이제 구현할 수 있습니다!