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