使用NSTextField委派问题

时间:2010-01-30 13:19:03

标签: objective-c cocoa macos delegates

我刚开始使用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通知将它用于我的主窗口时,同样的方法也可以正常工作...

任何人都可以提供帮助吗? :)

1 个答案:

答案 0 :(得分:13)

代表应该实施-controlTextDidChange:,而不是-textDidChange:-textDidChange:方法是NSTextField 上的方法,它会发布通知并调用[self.delegate controlTextDidChange:]。至于-keyUp:,这是NSControl事件处理行为的一部分。如果您希望代理在文本字段处理密钥事件时收到消息,则需要通过继承NSTextField来自行安排。