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

在我正在构建的项目中,当我将一些文本粘贴到特定的文本字段中时,我想有一个称为的方法.我似乎无法使它正常工作,但这就是我尝试过的

我将一个自定义类(基于NSObject)隐含为我的文本字段的委托,然后为其提供了方法:textDidChange:

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

然后,我在接口生成器中实例化了此类的对象,并将其设置为NSTextField的委托.但是,这似乎没有任何作用.但是,当我从http://www.programmish.com/?p=30构建示例代码时,一切似乎都可以正常工作.如何隐含此委托代码,使其真正起作用?

解决方法:

这对您不起作用的原因是textDidChange_不是委托方法.这是NSTextField上的一种方法,用于发布更改通知.如果您浏览了textDidChange的文档,将会看到它提到了委托方法的实际名称:

This method causes the receiver’s delegate to receive a controlTextDidChange: message. See the NSControl class specification for more information on the text delegate method.

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

将您的委托方法更改为:

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

它应该为您工作.

上一篇:javascript-如何模拟div的点击,然后以编程方式在webview中触发onclick事件?


下一篇:如何使用Cocoa UI制作Java应用程序?