Делегировать проблему с NSTextField - PullRequest
2 голосов
/ 30 января 2010

Я только начинаю разработку 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 Ответ

14 голосов
/ 30 января 2010

Делегат должен реализовать -controlTextDidChange:, а не -textDidChange:. Метод -textDidChange: - это метод в NSTextField , который заставляет его отправлять уведомление и вызывать [self.delegate controlTextDidChange:]. Что касается -keyUp:, это часть поведения NSControl по обработке событий. Если вы хотите, чтобы ваш делегат получал сообщение, когда текстовое поле обрабатывает событие key up, вам нужно организовать это самостоятельно, создав подкласс NSTextField.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...