7

我有 3 个文本字段(用户名、密码、确认密码)。当表单加载时,我希望光标在表单首次显示时在文本字段用户名中开始。请给我一些建议。预先感谢。

4

7 回答 7

29

[usernameTextField becomeFirstResponder];

这应该为您提供所需的结果。如果您想了解有关该机制的更多信息,可以在此处阅读有关响应者链的信息。

编辑:

我的错,我以为你的意思是 UITextField (Cocoa Touch)。

使用 NSWindow makeFirstResponder: 方法,而不是这个方法,使对象成为第一响应者。切勿直接调用此方法。

[window makeFirstResponder:usernameTextField];
于 2012-09-14T08:46:15.197 回答
3

使用 message becomeFirstResponder,如下所示:

[self.passwordField becomeFirstResponder]
于 2012-09-14T08:47:04.917 回答
2

[yourTextfield 成为FirstResponder]

于 2012-10-22T06:02:45.577 回答
1

在您的loadVieworviewDidLoad中(仅在 10.10 中可用)在super调用后添加以下内容

dispatch_async(dispatch_get_current_queue(), ^{
    [self.usernameInputField becomeFirstResponder];
});
于 2015-01-19T11:31:16.207 回答
0

如果您尝试在 NSPanel(或任何其他工作表)中实现此目的并且禁用标题+边框,则无法设置焦点(请参阅http://www.cocoabuilder.com/archive/cocoa/207749-nstextfield- will-not-become-editable-in-borderless-window.html )

在这种情况下,尝试继承工作表窗口类并覆盖 canBecomeKeyWindow 以始终返回 YES。

于 2015-03-29T21:40:55.240 回答
0

在斯威夫特

self.sampleUITextField.becomeFirstResponder()

于 2015-08-04T02:34:03.357 回答
-1

对于 macOS,使用 Swift 3, becomeFirstResponder() 调用必须在 viewWillAppear() 方法中。

class myViewController {
  @IBOutlet weak var myTextField: NSTextField!

  override func viewDidLoad() {
    super.viewDidLoad()
  }

  override func viewWillAppear {
    myTextField.becomeFirstResponder()
  }
  ...
}
于 2017-07-20T17:15:01.500 回答