【问题标题】:NSTextField FocusNSTextField 焦点
【发布时间】:2016-03-11 06:25:04
【问题描述】:

如果我不关注文本字段,如何移除对 NSTextField 的关注?

我有一个 NSTextField 并且我设置了 Action: Sent On End Editing。单击 textField 后,当我单击视图上的其他位置时,FOCUS 将始终位于我的 NSTextField 中。 此外,我使用了 ma​​keFirstResponderresignFirstResponder 但都是徒劳的。任何的想法?

@IBAction func endOfEditing(sender: NSTextField) {
    view.window?.makeFirstResponder(nil)
    view.window?.resignFirstResponder()
}

为了说明,无论我按哪里,焦点都将始终位于 textField 中。 (即使我按下按钮)

如何在文本框外单击时移除焦点?

【问题讨论】:

  • 我个人对 Swift 不太了解,但这可能是因为您使用的是view.window?。您可能想尝试使用 ViewController 类的名称,但是我对 Swift 还是很陌生。另外,我不太确定我是否正确理解了您的问题。也许澄清你希望 NSTextField 如何聚焦,这究竟意味着什么?
  • 你应该在你的文本视图上做resignFirstResponder()
  • @Lee 我试过sender.window?.resignFirstResponder() 但没有成功..
  • sender.resignFirstResponder()
  • @LeoDabus 不能正常工作

标签: swift nstextfield


【解决方案1】:

试试这个:更改“view.window?” “发件人”

@IBAction func endOfEditing(sender: NSTextField) {
   sender.makeFirstResponder(nil)
   sender.resignFirstResponder()
}

【讨论】:

【解决方案2】:

斯威夫特 4

对于那些仍然为专注和不专注而烦恼的人:我不知道 2016 年的情况是否如此,但在 Swift 4 中,我的 NSTextField 失去焦点,除非我点击另一个“可选”插座。

例如,如果我在NSTextField 之后单击NSButton,它不会失去焦点。我怀疑NSButton 捕获了该事件,从而阻止文本字段知道它必须散焦。

这是一个非常激进的解决方案,它肯定会使NSTextField 散焦

@IBAction func clickMyButton(_ sender: NSButton) { // or anywhere else

    self.quantityTextField.isEnabled = false
    self.quantityTextField.isEnabled = true

}

不是很性感,但很可靠

编辑:刚刚看到,它解决了@Lee 的问题

【讨论】:

  • 可以使用self.yourTextField.abortEditing(),而不是禁用和重新启用该字段
【解决方案3】:

尝试将此功能添加到您的 viewController

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    // I assume your textField call myText
    myText. resignFirstResponder()
}

【讨论】:

  • override func mouseDown(event: NSEvent) { NSApp.mainWindow!.makeFirstResponder(nil) } 在单击视图时起作用。但是,如果我单击按钮,它不起作用。通过这样做,我必须在我的视图控制器上的任何地方都使用 makeFirstResponder 吗?有更好的主意吗?
  • @WeiJay 我以前使用过mouseDown,但我只是想在触摸视图时resignFirstResponder 是可以的,如果你想点击按钮,你可以在点击按钮时使用相同的代码和功能执行此操作.
  • 但是从逻辑上想想,如果你在一个屏幕上有很多按钮或其他元素,就没有那个逻辑,对用户体验不是很好。虽然我不是很确定你要做什么,但是一件一件的去做,先不要想的太复杂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多