打开应用程序时如何关注文本字段?

时间:2018-10-19 12:41:44

标签: swift macos nstextfield

打开应用程序时如何关注文本字段?

迅速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()方法)使对象成为第一响应者。 切勿直接调用此方法。

2 个答案:

答案 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)
}
相关问题