更改后,在NSSearchField中居中占位符字符串

时间:2015-02-25 14:39:06

标签: cocoa nssearchfield

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

enter image description here

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

我是否强制NSSearchField在更改后重新定位占位符字符串?

3 个答案:

答案 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
}