3

UI に placeholderString を持つ NSSearchField があります。デフォルトの値は Search で、自動的に中央に配置されます。しかし、ユーザーがサイドバーで選択を変更すると、プレースホルダー文字列を「{NAME OF SIDEBARITEM} で検索」に置き換えます。例えば:

ここに画像の説明を入力

ご覧のとおり、プレースホルダー文字列は中央に配置されていません。この検索フィールドがアクティブ化されてから非アクティブ化されると、中央に配置されます。

NSSearchField が変更された後にプレースホルダー文字列を再配置するにはどうすればよいですか?

4

3 に答える 3

1

[searchField setNeedsLayout:YES]プレースホルダー文字列を設定した後に呼び出します。

于 2015-03-21T19:19:13.180 に答える
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
}
于 2015-12-17T13:33:31.120 に答える
0

私が現在使用している回避策は、すべてのプレースホルダー文字列に空白のパディングを追加して、ほぼ同じサイズにすることです。

于 2015-03-20T00:49:47.400 に答える