NSTextField焦点

时间:2016-03-11 06:25:04

标签: swift nstextfield

如果我没有专注于textField,如何在NSTextField上移除焦点?

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

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

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

enter image description here

如何在textField外部单击时删除焦点?

enter image description here

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

快捷键4

对于那些仍在关注焦点和注意力不集中的人:我不知道在2016年是否会发生这种情况,但是在Swift 4中,我的NSTextField失去了焦点,除非我单击另一个“可选”的插座。

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

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

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

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

}

不是很性感但是很可靠

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

答案 2 :(得分:0)

尝试将此功能添加到viewController

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