我有 3 个文本字段(用户名、密码、确认密码)。当表单加载时,我希望光标在表单首次显示时在文本字段用户名中开始。请给我一些建议。预先感谢。
7 回答
[usernameTextField becomeFirstResponder];
这应该为您提供所需的结果。如果您想了解有关该机制的更多信息,可以在此处阅读有关响应者链的信息。
编辑:
我的错,我以为你的意思是 UITextField (Cocoa Touch)。
使用 NSWindow makeFirstResponder: 方法,而不是这个方法,使对象成为第一响应者。切勿直接调用此方法。
[window makeFirstResponder:usernameTextField];
使用 message becomeFirstResponder
,如下所示:
[self.passwordField becomeFirstResponder]
[yourTextfield 成为FirstResponder]
在您的loadView
orviewDidLoad
中(仅在 10.10 中可用)在super
调用后添加以下内容
dispatch_async(dispatch_get_current_queue(), ^{
[self.usernameInputField becomeFirstResponder];
});
如果您尝试在 NSPanel(或任何其他工作表)中实现此目的并且禁用标题+边框,则无法设置焦点(请参阅http://www.cocoabuilder.com/archive/cocoa/207749-nstextfield- will-not-become-editable-in-borderless-window.html )
在这种情况下,尝试继承工作表窗口类并覆盖 canBecomeKeyWindow 以始终返回 YES。
在斯威夫特
self.sampleUITextField.becomeFirstResponder()
对于 macOS,使用 Swift 3, becomeFirstResponder() 调用必须在 viewWillAppear() 方法中。
class myViewController {
@IBOutlet weak var myTextField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear {
myTextField.becomeFirstResponder()
}
...
}