我刚开始使用OSX开发,我正在尝试从NSTextField获取委托通知。到目前为止,我已经得到了以下代码:
这是我设置委托的地方:
- (void) awakeFromNib {
NSLog(@"Setting delegate");
[amountField setDelegate: [[TextfieldController alloc] initWithLog]];
}
这是我的TextfieldController:
- (TextfieldController *) initWithLog {
self = [super init];
NSLog(@"TextfieldController initialized");
return self;
}
- (void)textDidChange:(NSNotification *)aNotification {
NSLog(@"textdidChange");
}
- (void)keyUp:(NSNotification *)aNotification {
NSLog(@"keyUp");
}
然而,没有调用textDidChange和keyUp ......不确定我在这里缺少什么,因为当我使用windowDidMiniaturize通知将它用于我的主窗口时,同样的方法也可以正常工作...
任何人都可以提供帮助吗? :)
答案 0 :(得分:13)
代表应该实施-controlTextDidChange:
,而不是-textDidChange:
。 -textDidChange:
方法是NSTextField 上的方法,它会发布通知并调用[self.delegate controlTextDidChange:]
。至于-keyUp:
,这是NSControl
事件处理行为的一部分。如果您希望代理在文本字段处理密钥事件时收到消息,则需要通过继承NSTextField
来自行安排。