如何删除NSTextField在编辑完成时选择的指示器
当选择可编辑的NSTextField时,Cocoa通过在文本字段周围制作蓝色矩形将其标记为默认值。如何删除NSTextField在编辑完成时选择的指示器
但是,编辑结束后,除非选择了另一个文本字段,否则指示器无法删除。
要删除选择指标,我们应该怎么做?
我们使用以下函数来检测编辑的结束。
override func controlTextDidEndEditing(notification: NSNotification) {
// doing things like getting the string user has been made.
}
NSTextField
默认情况下绘制聚焦环显示活动状态。如果你想删除它,你可以将t设置为无。
override func controlTextDidEndEditing(_ obj: Notification) {
textField.focusRingType = .none
}
注意的NSTextField
仍然是第一个响应,如果用户再次开始打字,对焦环不会变成蓝色。这是因为你已经通过编程改变了它。为了恢复它,你需要自己做。
通过此功能删除矩形(环形),但用户输入的字符串仍以蓝色背景色标记。 – Hope
尝试'NSApp.mainWindow?.makeFirstResponder(self)'而不是'textField.focusRingType = .none' – Khundragpan
是的,这已成功。但是为什么在新的字符串输入后通常不会被删除。我认为这是一个错误。 – Hope
试试这个
textField.window?.makeFirstResponder(self)
什么是“自我”?为什么不'nil'或'textField.window'? –
自己是视图控制器。 – avvensis
你有什么理由相信视图控制器接受第一响应者?查看[makeFirstResponder()']的文档(https://developer.apple.com/reference/appkit/nswindow/1419366-makefirstresponder)。 –
即使我想** anotherTextField.becomeFirstResponder()**,** ** textField.resignFirstResponder什么也没有改变。 – Hope
为什么不简单地将窗口的第一响应者设置为取消选择文本字段的'nil'? – vadian