打开应用程序时如何关注文本字段?
迅速4, Xcode 10, macOS
答案:
感谢@Willeke在评论中的建议,我这样做是这样的:
import Cocoa
import AppKit
import Foundation
let defaults = UserDefaults.standard
class ViewController: NSViewController{
@IBOutlet weak var addDomain: NSTextField!
@IBOutlet weak var addSiteField: NSTextField!
@IBOutlet weak var tableView: NSTableView!
@IBOutlet weak var removeSite: NSSegmentedControl!
override func viewDidAppear() {
super.viewDidAppear()
addDomain.window?.makeFirstResponder(addDomain)
}
因为: https://developer.apple.com/documentation/appkit/nsresponder/1526750-becomefirstresponder
使用 NSWindow makeFirstResponder(_:)方法(而不是 becomeFirstResponder()方法)使对象成为第一响应者。 切勿直接调用此方法。
答案 0 :(得分:0)
在您的viewController
中的viewDidAppear
yourTextField.becomeFirstResponder()
更新:
macOS
实现需要使用NSWindow makeFirstResponder
!
答案 1 :(得分:0)
您似乎并没有覆盖属于您的 NSViewController 的 viewDidAppear ,但是您自己添加了一个新功能。
尝试使用:
override func viewDidAppear() {
// Though the default implementation does nothing as of now,
// it is always safe to have the call to the super function in place,
// in case you plan to add sub-classes in between.
super.viewDidAppear()
addDomain.window?.makeFirstResponder(addDomain)
}