У меня есть два NSTextField
с: 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");
}
}
Я уверен, что мог бы помочь здесь!