Objective c NSTextField辞职第一响应者
我试图让我的文本字段在用户完成编辑后(比如当他们按enter键时)退出第一响应者。委托方法正在被调用,但我现在的方法不起作用,正确的方法是什么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
- (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];
}