我在UI中有一个带有placeholderString的NSSearchField。默认情况下,其值为“搜索”,并自动居中。但是当用户更改边栏中的选择时,我将占位符字符串替换为“在{NAME OF SIDEBARITEM}中搜索”。例如:
正如您所看到的,占位符字符串不再居中。激活此搜索字段后,它将居中,然后停用。
我是否强制NSSearchField在更改后重新定位占位符字符串?
答案 0 :(得分:1)
设置占位符字符串后调用[searchField setNeedsLayout:YES]
。
答案 1 :(得分:0)
我目前使用的解决方法是为所有占位符字符串添加一些空格填充,使它们的大小大致相同。
答案 2 :(得分:0)
我喜欢的唯一可行的解决方案是将搜索字段的stringValue
设置为某个非空值,然后在占位符更改后立即设置之前设置的值:
@IBAction func setPlaceholder(sender: AnyObject) {
self.searchField.placeholderString = self.inputField.stringValue
let currentSearchStringValue = self.searchField.stringValue
self.searchField.stringValue = "-"
self.searchField.stringValue = currentSearchStringValue
}