Изменить значок поля поиска - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь реализовать поведение поиска, как в Xcode: если вы вводите что-то в поле поиска, значок меняет цвет.

Я делегирую searchFieldDidStartSearching и searchFieldDidEndSearching дляконтроллер и изменить изображение.Проблема в том, что изображение значка меняется только тогда, когда окно теряет фокус.

enter image description here

class ViewController: NSViewController {
    @IBOutlet weak var searchField: NSSearchField!

    func searchFieldDidStartSearching(_ sender: NSSearchField) {
        print("\(#function)")

        (searchField.cell as! NSSearchFieldCell).searchButtonCell?.image = NSImage.init(named: "NSActionTemplate")
    }

    func searchFieldDidEndSearching(_ sender: NSSearchField) {
        print("\(#function)")

        (searchField.cell as! NSSearchFieldCell).searchButtonCell?.image = NSImage.init(named: "NSHomeTemplate")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }
}

Заранее благодарен за любые идеи / предложения.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Решите проблему, создав подкласс NSSearchFieldCell и назначьте этот класс ячейке поля.

0 голосов
/ 13 октября 2018

Как вы можете видеть, когда вы щелкаете внутри представления, оно все еще фокусируется на текстовом поле поиска (так как вы можете ввести его после того, как щелкнули под ним).Поскольку изменение изображения включено, когда оно теряет фокус, следует проверить, не щелкнули ли вы за пределами текстового поля.

...