Python 在PyObjc和Cocoa中实现NSText委托方法

Python 在PyObjc和Cocoa中实现NSText委托方法,python,cocoa,pyobjc,Python,Cocoa,Pyobjc,在我正在构建的项目中,我希望在将一些文本粘贴到特定文本字段时调用一个方法。我似乎无法让它发挥作用,但我已经试过了 我实现了一个自定义类(基于NSObject)作为textfield的委托,然后给它一个方法:textDidChange: class textFieldDelegate(NSObject): def textDidChange_(self, notification): NSLog("textdidchange") 然后,我在interface builde

在我正在构建的项目中,我希望在将一些文本粘贴到特定文本字段时调用一个方法。我似乎无法让它发挥作用,但我已经试过了

我实现了一个自定义类(基于NSObject)作为textfield的委托,然后给它一个方法:textDidChange:

class textFieldDelegate(NSObject):
    def textDidChange_(self, notification):
        NSLog("textdidchange")

然后,我在interface builder中实例化了此类的一个对象,并将其设置为NSTextField的委托。然而,这似乎没有任何作用。然而,当我从构建示例代码时,一切似乎都运行得非常好。如何实现此委托代码以使其实际工作?

此方法不适用于您的原因是
textDidChange\uu
不是委托方法。它是
NSTextField
上发布更改通知的方法。如果您查看了
textDidChange
的文档,您会发现它提到了委托方法的实际名称:

此方法使接收方的委托接收controlTextDidChange:消息。有关文本委托方法的更多信息,请参见NSControl类规范

委托方法实际上被称为
controlTextDidChange\uUcode>,并在
NSTextField
超类
NSControl
上声明

将委托方法更改为:

def controlTextDidChange_(self, notification):
    NSLog("textdidchange")
它应该对你有用