【发布时间】:2014-04-01 22:34:27
【问题描述】:
我想创建一个文本字段,如果我在其中单击或按 Enter 键,它会失去焦点。由于对焦环消失。我见过这样的情况,但我不知道在哪里放置代码。谁能告诉我如何让 NSTextfield 失去焦点?
【问题讨论】:
标签: objective-c xcode macos nstextfield
我想创建一个文本字段,如果我在其中单击或按 Enter 键,它会失去焦点。由于对焦环消失。我见过这样的情况,但我不知道在哪里放置代码。谁能告诉我如何让 NSTextfield 失去焦点?
【问题讨论】:
标签: objective-c xcode macos nstextfield
一种方法是实现 NSTextFieldDelegate,将委托分配给您的文本字段,并让它调用一个选择器(代码中的一个更改方法使第一响应者 = nil)。当文本字段完成接收输入时,将使用消息调用委托。在此处查看 API 以了解更多信息:
【讨论】:
对于像我这样懒惰的人,这里有一些代码。
这是我使用的精简的 NSTextfieldDelegate 方法:
func control(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool {
DispatchQueue.main.async {
self.textField2.window?.makeFirstResponder(nil)
}
return true
}
resignFirstResponder Docu 说:
使用 NSWindow 方法 makeFirstResponder:,而不是这个方法,使 文本查看第一响应者。切勿直接调用此方法。
// don't use this as the name may suggest (at least it did for me)
self.textField2.resignFirstResponder()
【讨论】: