Обнаружение ключа ввода NSTextField или обнаружение firstResponder

У меня есть два NSTextField s: textFieldUserID и textFieldPassword .

Для textFieldPassword у меня есть следующий делегат:

- (void)controlTextDidEndEditing:(NSNotification *)aNotification

Этот делегат вызывается, когда textFieldPassword находится в фокусе, и я нажимаю клавишу ввода. Это именно то, что я хочу.

Моя проблема в том, что controlTextDidEndEditing также вызывается, когда textFieldPassword имеет фокус, и я перемещаю фокус на textFieldUserID (с помощью мыши или клавиши табуляции). Это НЕ то, что я хочу.

Я попытался использовать уведомление controlTextDidChange (которое вызывается один раз при нажатии клавиши), но мне не удалось выяснить, как определить клавишу ввода ( [textFieldPassword stringValue] не включает клавишу ввода). Может кто-нибудь помочь мне разобраться в этом?

Я также пытался определить, был ли textFieldUserID firstResponder , но у меня это не сработало. Вот код, который я опробовал:

if ( [[[self window] firstResponder] isKindOfClass:[NSTextView class]] &&
    [[self window] fieldEditor:NO forObject:nil] != nil ) {
    NSTextField *field = [[[self window] firstResponder] delegate];
    if (field == textFieldUserID) {
        // do something based upon first-responder status
        NSLog(@"is true");
    }
}

Я уверен, что здесь нужна помощь!

5
задан pablasso 9 March 2012 в 05:49
поделиться