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

时间:2014-01-24 18:32:45

标签: macos cocoa nstextfield

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

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

  • 如果我在密码字段中输入字符并按下按钮,则其stringValue为空。
  • 如果我在密码字段('a')中输入一个字符,请将焦点更改为用户名字段,将焦点更改回密码字段,然后输入第二个字符('b'),密码stringValue为'a '而不是'ab'。

密码字段的stringValue(以及用户名字段)似乎不会在焦点时更新其值。我已尝试以下方法来纠正这个问题,但无济于事:

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

1 个答案:

答案 0 :(得分:4)

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

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