【问题标题】:How to focus on a text field when opening an application?打开应用程序时如何关注文本字段?
【发布时间】:2018-10-19 12:41:44
【问题描述】:

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

斯威夫特 4, Xcode 10, macOS

回答:

感谢@Willeke 在 cmets 的建议,我是这样做的:

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

【问题讨论】:

  • 仅供参考:您可以在帖子中粘贴代码,而不是 IDE 中的图像。这对您和您的问题的读者来说更容易。有一个很好的编码:)
  • 始终将代码、数据、日志、错误消息等作为文本(而非图像)发布,以便它们可以搜索,并且可以在回答时复制。请edit你的问题
  • 不要打电话给becomeFirstResponder。 “使用 NSWindow makeFirstResponder: 方法,而不是这个方法,使对象成为第一响应者。永远不要直接调用这个方法。”
  • @Willeke 谢谢!照你说的做了。请检查帖子。现在我做对了吗?

标签: swift macos nstextfield


【解决方案1】:

您似乎没有覆盖属于您的 NSViewControllerviewDidAppear,而是自己添加了一个新功能。

尝试使用:

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)
}

【讨论】:

  • 不要打电话给becomeFirstResponder。请阅读文档。
  • 感谢@Willeke 的指点!我已经用相同的方式更新了答案。
【解决方案2】:

在您的viewControllerviewDidAppear

yourTextField.becomeFirstResponder()

更新:

macOS 实现需要使用 NSWindow makeFirstResponder!

【讨论】:

  • 感谢关注!请检查我的帖子。可能有什么问题?
  • 不要打电话给becomeFirstResponder。请阅读文档。
  • @Willeke 根据文档Call this method when you want to the current object to be the first responder?
  • 请阅读macOS版本:becomeFirstResponder.
猜你喜欢
  • 2021-11-23
  • 2019-11-12
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 2011-06-19
相关资源
最近更新 更多