2016-08-12 30 views
1

当选择可编辑的NSTextField时,Cocoa通过在文本字段周围制作蓝色矩形将其标记为默认值。如何删除NSTextField在编辑完成时选择的指示器

但是,编辑结束后,除非选择了另一个文本字段,否则指示器无法删除。

要删除选择指标,我们应该怎么做?

我们使用以下函数来检测编辑的结束。

override func controlTextDidEndEditing(notification: NSNotification) { 

    // doing things like getting the string user has been made. 

    } 
+0

即使我想** anotherTextField.becomeFirstResponder()**,** ** textField.resignFirstResponder什么也没有改变。 – Hope

+1

为什么不简单地将窗口的第一响应者设置为取消选择文本字段的'nil'? – vadian

回答

2

NSTextField默认情况下绘制聚焦环显示活动状态。如果你想删除它,你可以将t设置为无。

override func controlTextDidEndEditing(_ obj: Notification) { 
    textField.focusRingType = .none 
} 

注意NSTextField仍然是第一个响应,如果用户再次开始打字,对焦环不会变成蓝色。这是因为你已经通过编程改变了它。为了恢复它,你需要自己做。

+0

通过此功能删除矩形(环形),但用户输入的字符串仍以蓝色背景色标记。 – Hope

+1

尝试'NSApp.mainWindow?.makeFirstResponder(self)'而不是'textField.focusRingType = .none' – Khundragpan

+0

是的,这已成功。但是为什么在新的字符串输入后通常不会被删除。我认为这是一个错误。 – Hope

0

试试这个

textField.window?.makeFirstResponder(self)

+0

什么是“自我”?为什么不'nil'或'textField.window'? –

+0

自己是视图控制器。 – avvensis

+0

你有什么理由相信视图控制器接受第一响应者?查看[makeFirstResponder()']的文档(https://developer.apple.com/reference/appkit/nswindow/1419366-makefirstresponder)。 –

相关问题