2009-06-01 6 views
3

내가 만드는 프로젝트에서 특정 텍스트 필드에 텍스트를 붙여 넣을 때 호출되는 메서드가 필요합니다. textDidChange :PyObjc 및 Cocoa에서 NSText 대리자 메서드 구현

나는이 작업을 얻을 수가 있지만, 여기에 내가

내 텍스트 필드에 대한 대리자로 (NSObject의 기준) 사용자 정의 클래스를 implimented

을 시도했습니다 무엇을 할 수없는, 그것은에게 방법을 준
class textFieldDelegate(NSObject): 
    def textDidChange_(self, notification): 
     NSLog("textdidchange") 

다음 인터페이스 작성기에서이 클래스의 개체를 인스턴스화하고 NSTextField의 대리인으로 설정합니다. 이것은 그러나 아무것도하지 않는 것 같습니다. 그러나 http://www.programmish.com/?p=30에서 예제 코드를 빌드하면 모든 것이 완벽하게 작동하는 것처럼 보입니다. 이 대리자 코드가 실제로 작동하도록 함축하려면 어떻게해야합니까?

답변

3

이유가 이것이 작동하지 않는 이유는 textDidChange_이 대리인 메서드가 아니기 때문입니다. 변경 알림을 게시하는 NSTextField의 메소드입니다. 당신이 textDidChange에 대한 문서에서 슬쩍 한 경우는 대리자 메서드의 실제 이름을 언급 한 것을 볼 수 있습니다 : 메시지 :

이 방법은 controlTextDidChange를 수신하는 수신기의 대리자를 야기한다. 텍스트 대리자 메서드에 대한 자세한 내용은 NSControl 클래스 사양을 참조하십시오.

위임 방법은 실제로 controlTextDidChange_이라고하며, NSControlNSTextField 슈퍼 클래스에 선언됩니다.

는에 위임 방법을 변경

:

def controlTextDidChange_(self, notification): 
    NSLog("textdidchange") 

그것은 당신을 위해 작동합니다.

관련 문제