代码之家  ›  专栏  ›  技术社区  ›  fresskoma

使用nstextfield委派问题

  •  2
  • fresskoma  · 技术社区  · 14 年前

    我只是从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都不会被调用…不知道我在这里遗漏了什么,因为当我把它和windowdid小型化通知一起用于我的主窗口时,同样的方法工作得很好…

    有人能帮忙吗?:)

    1 回复  |  直到 14 年前
        1
  •  13
  •   user23743    14 年前

    学员应执行 -controlTextDidChange: 不是 -textDidChange: . 这个 -文本更改: 方法是一种方法 关于NSTECTER字段 它会发出通知并调用 [self.delegate controlTextDidChange:] . 至于 -keyUp: ,这是 NSControl 的事件处理行为。如果希望您的代理在textfield处理一个key up事件时接收一条消息,您需要自己通过子类化来安排它。 NSTextField .