在PyObjc和Cocoa中实现NSText代理方法

3
在我正在构建的项目中,我想在将一些文本粘贴到特定的文本字段中时调用一个方法。但是我似乎无法让它起作用,以下是我的尝试:
我实现了一个自定义类(基于NSObject)作为我的textfield的代理,并给它方法:textDidChange:
class textFieldDelegate(NSObject):
    def textDidChange_(self, notification):
        NSLog("textdidchange")

我在界面构建器中实例化了这个类的一个对象,并将其设置为NSTextField的代理。然而,这似乎没有做任何事情。但是,当我从http://www.programmish.com/?p=30构建示例代码时,一切都运行得非常完美。我该如何实现这个代理代码,使它真正起作用?

1个回答

3
这不起作用的原因是textDidChange_不是代理方法,而是在NSTextField上发布更改通知的方法。如果您查看textDidChange的文档,您会发现它提到了实际的代理方法名称:

此方法导致接收器的代理接收controlTextDidChange:消息。有关文本代理方法的更多信息,请参见NSControl类规范。

实际上,代理方法被称为controlTextDidChange_,并在NSTextField超类NSControl中声明。
请将您的代理方法更改为:
def controlTextDidChange_(self, notification):
    NSLog("textdidchange")

它应该适用于您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接