NSTextField 作为 FirstResponder 没有 stringValue 除非手动点击别处

NSTextField as FirstResponder has no stringValue unless manually clicking elsewhere

我有一个 NSView,当它打开时,它上面的第三个 NSTextField 变成 FirstResponder 以将光标设置在那里。如果我打开此表单并开始键入然后单击保存按钮,则代码中的 NSTextField.stringValue 为空,即使它包含视图中的字符。如果我在单击保存按钮之前单击该字段,则该字段 stringValue 在代码中可用。

我确信这在过去有效,有什么想法是怎么回事吗? 我尝试在保存时退出 firstResponder,并在单击时将保存按钮设置为 firstResponder 等

目前我唯一的解决方案是不要将其设置为 First Responder 并强制用户单击该字段,写一些东西然后单击有效的保存按钮。

XCode 9.1 (9B55)

非常感谢您的帮助。

正如 Willeke 在评论中询问我如何设置和删除第一响应者,我注意到我错误地将其设置为:

[self.textfield becomeFirstResponder]

文档指出不应使用此方法,正确的方法是:

if ([self.textfield acceptsFirstResponder])
        [self.textfield.window makeFirstResponder:self.textfield];

谢谢 Willeke!