我在 UI 中有一个带有 placeholderString 的 NSSearchField。默认情况下,它的值为 Search 并且自动居中。但是当用户在侧边栏中更改选择时,我将占位符字符串替换为“在 {NAME OF SIDEBARITEM} 中搜索”。例如:
如您所见,占位符字符串不再居中。在此搜索字段激活然后停用后,它将居中。
我如何强制 NSSearchField 在更改后重新定位占位符字符串?
我在 UI 中有一个带有 placeholderString 的 NSSearchField。默认情况下,它的值为 Search 并且自动居中。但是当用户在侧边栏中更改选择时,我将占位符字符串替换为“在 {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
}