更改后 NSSearchField 中的中心占位符字符串

Center placeholder string in NSSearchField after it was changed

我在 UI 中有一个带有占位符字符串的 NSSearchField。默认情况下,它的值为 Search 并且自动居中。但是当用户在边栏中更改选择时,我将占位符字符串替换为 "Search in {NAME OF SIDEBARITEM}"。例如:

如您所见,占位符字符串不再居中。在此搜索字段激活然后停用后,它将居中。

如何强制 NSSearchField 在更改后重新定位占位符字符串?

我目前使用的解决方法是向所有占位符字符串添加一些空白填充,使它们的大小大致相同。

设置占位符字符串后调用[searchField setNeedsLayout:YES]

我喜欢的唯一有效解决方案是将搜索字段的 stringValue 设置为某个非空值,然后在占位符更改后立即设置值:

@IBAction func setPlaceholder(sender: AnyObject) {
    self.searchField.placeholderString = self.inputField.stringValue
    let currentSearchStringValue = self.searchField.stringValue
    self.searchField.stringValue = "-"
    self.searchField.stringValue = currentSearchStringValue
}