Objective c NSTextField辞职第一响应者

Objective c NSTextField辞职第一响应者,objective-c,cocoa,interface-builder,Objective C,Cocoa,Interface Builder,我试图让我的文本字段在用户完成编辑后(比如当他们按enter键时)退出第一响应者。委托方法正在被调用,但我现在的方法不起作用,正确的方法是什么 - (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor { [fieldEditor resignFirstResponder]; return YES; } 我还不是iPhone编程专家,但您需要实现的方法是“textFieldSh

我试图让我的文本字段在用户完成编辑后(比如当他们按enter键时)退出第一响应者。委托方法正在被调用,但我现在的方法不起作用,正确的方法是什么

- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
{
    [fieldEditor resignFirstResponder];
    return YES;
}

我还不是iPhone编程专家,但您需要实现的方法是“textFieldShouldReturn”,实现方式如下:

-(BOOL)文本字段应返回:(UITextField*)文本字段{
[文本字段辞职第一响应者];
返回YES;

}

来自-辞职FirstResponder方法上的文档:

使用NSWindow makeFirstResponder: 方法,而不是此方法,来生成 向第一个响应者发送对象。从未 直接调用此方法

此代码应执行以下操作:

[myWindow makeFirstResponder:nil];

我相信您正在寻找NSControl委托方法:

- (void)controlTextDidEndEditing:(NSNotification *)notif
NSTextField
委托中实现此方法(在IB中轻松设置)

然后更改响应者的请求,例如

[self.window selectNextKeyView:self]
应该有用

- (void)controlTextDidEndEditing:(NSNotification *)obj {

   [self.window makeFirstResponder:view];
}

其中“视图”是NSTextView控件的父NSView。

也许我应该更清楚,它不适用于iPhone应用程序。您展示的方法是针对UITextField委托的,这是针对Cocoa Touch的。这不是在osx sdk中,每个类都以UI开始,属于iOS,不是OSXIt导致崩溃,但我认为这是另一个问题,当我修复它时,我认为您的解决方案会起作用。谢谢。问题肯定在别处。这是使任何内容都不成为窗口的第一响应者的正确方法。当我调用它时,它会导致一个无限循环,窗口在其中询问控件:textShouldEndEditing:,该控件调用makeFirstResponder:ad infinitum。@SG1:将代码发布到一个新问题中。你的评论中没有足够的信息可以猜测。
- (void)controlTextDidEndEditing:(NSNotification *)obj {

   [self.window makeFirstResponder:view];
}