Macos 按下按钮时,NSTextField stringValue不是最新的

Macos 按下按钮时,NSTextField stringValue不是最新的,macos,cocoa,nstextfield,Macos,Cocoa,Nstextfield,我创建了一个对话框窗口,其中包含一个NSTextField和一个NSSecureTextField(用于用户名和密码),以及一个要提交的NSButton。插座在Interface Builder中正确连接(非零) 我正在检索按钮的操作处理程序中用户名和密码字段的stringValue。然而: 如果我在密码字段中输入一个字符并按下按钮,则其stringValue为空 如果我在密码字段('a')中输入一个字符,将焦点更改为用户名字段,将焦点更改回密码字段,然后输入第二个字符('b'),则密码字符串

我创建了一个对话框窗口,其中包含一个NSTextField和一个NSSecureTextField(用于用户名和密码),以及一个要提交的NSButton。插座在Interface Builder中正确连接(非零)

我正在检索按钮的操作处理程序中用户名和密码字段的stringValue。然而:

  • 如果我在密码字段中输入一个字符并按下按钮,则其stringValue为空
  • 如果我在密码字段('a')中输入一个字符,将焦点更改为用户名字段,将焦点更改回密码字段,然后输入第二个字符('b'),则密码字符串值为'a'而不是'ab'
密码字段(以及用户名字段)的stringValue在焦点时似乎不会更新其值。我尝试了以下方法来纠正此问题,但没有成功:

  • 将文本字段的操作设置为“结束编辑时发送”
  • 将文本字段的状态设置为“连续”
  • 在焦点中的文本字段上调用ValidateEdit
  • 在焦点文本字段上调用resignFirstResponder
  • 调用[self.window makeFirstResponder:self.window]
  • 在以文本字段为参数(或nil)的窗口上调用endEditingFor:

    • 我找到了解决问题的办法。在询问UITextField的值之前,我禁用了它。出于某种原因,如果我在禁用它之前请求该值,则该值是正确的

      更新:UIControl setEnabled:方法的文档说明,如果其参数为否,“任何编辑都将中止。”