我有两个NSTextField:textFieldUserID和textFieldPassword.
因为textFieldPassword,我有一个代表如下:
- (void)controlTextDidEndEditing:(NSNotification *)aNotification
Run Code Online (Sandbox Code Playgroud)
textFieldPassword有焦点时我会调用此委托,然后按Enter键.这正是我想要的.
我的问题是,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");
}
}
Run Code Online (Sandbox Code Playgroud)
我肯定可以在这里使用一些帮助!