2011-02-23 6 views
1

내가 가지고 발사하지 :- (무효) mouseDown : (NSEvent *) theEvent는

  • myViewController.m myViewController에서
  • myViewController.h
  • myView.xib

합니다. m, 다음을 추가했습니다.

- (void)mouseDown:(NSEvent *)theEvent { 
    NSLog(@"mouseDown: entered"); 
} 

내가 보기 (myView.xib)에서 mouseDown : method ...를 입력하지 않은 이유는 무엇입니까? 왜 그런지 알고 있습니까?

도움을 주셔서 감사합니다.

답변

3

NSView (또는 정확하게는 NSResponder)에서 상속되는 클래스 (예 : MyView) 내에 mouseDown:(NSEvent *)theEvent 메서드를 구현해야합니다. 그런 다음 xib 파일의보기 클래스를 방금 작성한 클래스로 설정하십시오.

일반적으로 클래스 이름은 대문자로 시작합니다.

+3

그러나 NSViewController ** **는 NSResponder에서 상속받습니다. 진짜 문제는'NSViewController' 인스턴스가 응답자 체인에 자동으로 추가되지 않는다는 것입니다. –

+0

goetz와 Bavarious에 대한 답변 주셔서 감사합니다. 나는 goetz가 말했듯이 매우 잘 작동합니다. 그럼에도 불구하고, 그것은 약간의 코드를 복잡하게 만든다. Bavarious : 내보기 컨트롤러를 내보기의 응답 체인에 어떻게 추가 할 수 있는지 말해 줄 수 있습니까? 고마워요! –

+0

업데이트 : 10.10 이상에서 링크하면 NSViewController가 자동으로 응답 체인에 추가됩니다. – Andrew

관련 문제