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

时间:2009-06-01 12:31:58

标签: python cocoa pyobjc

在我正在构建的项目中,我希望在将一些文本粘贴到特定文本字段时调用一个方法。我似乎无法让这个工作,但这是我尝试过的

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

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

然后我在界面构建器中实例化了该类的对象,并将其设置为NSTextField的委托。然而,这似乎没有做任何事情。但是,当我从http://www.programmish.com/?p=30构建示例代码时,一切似乎都很好。如何实现此委托代码以使其实际有效?

1 个答案:

答案 0 :(得分:3)

这不适合您的原因是textDidChange_不是委托方法。这是发布更改通知的NSTextField上的一种方法。如果您查看了textDidChange的文档,您会看到它提到了委托方法的实际名称:

  

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

委托方法实际上称为controlTextDidChange_,并在NSTextField超类NSControl上声明。

将您的委托方法更改为:

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

它应该适合你。