NSViewController를 리스폰더 체인에 추가하기

NSViewController가 이벤트를 수신하여 처리하기 좋은 객체인데, 이녀석은 FirstResponder가 될 수 없다보니 코코아에서 기본적으로 이벤트를 수신하는 것이 불가능하다. NSViewController를 사용하면 NIB(혹은 xib)파일로 부터 NSView를 매우 쉽게 불러올 수 있다. 하지만 NSWindowController와는 다르게 몇가지 한계점이 있는데 이 부분을 설명하고 해결방안을 제시하고자 한다. NSWindowController의 경우 NSWindow와 자연스레 연결하여 사용 할 수있게 해주는 다음과같은 기능들을 가지고 있다. NSWindow객체는 windowController메서드를 이용하여 연결된 NSWindowController에 바로 접근 가능 First responder로서 사용자 이벤트를 수신 하여 특정 액션을 실행 가능 (responder chain의 순서는 NSWindow바로 다음) NSWindow의 delegate로서 windowWillClose:, windowDidBecomeMain: 등을 수신하기 적합하고, windowDidLoad, windowWillLoad 등의 오버라이드 가능한 자체적인 메서드도 가지고 있다. 반면 NSViewController의 경우 NSView에서 NSViewController로의 직접적으로 접근하는 방법이 제공되지 않기때문에 기본적으로 연동 기능이 없다고 보면 된다. ...

2013년 10월 28일 · 2분 · 323단어