Как изменить поведение кнопки cancel в NSSearchField?

В Finder я обнаружил, что кнопка отмены исчезает, когда NSSearchfield получает фокус в первый раз, но когда я ввожу что-то в поле поиска, кнопка отмены присутствует все время, пока я не нажму на нее. Я также вручную создаю поле nssearchfield и ввожу несколько слов Однако, когда я удаляю слово одно за другим до тех пор, пока ничего не исчезнет, ​​кнопка отмены, наконец, исчезнет. Это похоже на поведение поля nssearch по умолчанию, так как я могу изменить поведение по умолчанию? пожалуйста, помогите, спасибо!


person gohamgx    schedule 30.01.2013    source источник
comment
Вам нужно будет создать подклассы.   -  person trojanfoe    schedule 30.01.2013
comment
у тебя есть образец кода?   -  person gohamgx    schedule 30.01.2013
comment
спасибо, я обыщу это   -  person gohamgx    schedule 30.01.2013
comment
Я установил делегата поля поиска и функцию controlTextDidChange:. Я хочу, чтобы кнопка отмены отображалась, когда в поле поиска ничего нет. Но я обнаружил, что кнопка отмены на самом деле является NSButtonCell, и у нее нет функции setHidden. Так что проблема все еще решена. !   -  person gohamgx    schedule 31.01.2013


Ответы (1)


Вы можете напрямую получить доступ к кнопке отмены:

Быстрый

let searchField = NSSearchField()

// Change the button:
if let cell = searchField.cell as? NSSearchFieldCell,
    let cancelButton = cell.cancelButtonCell {
    // Here you can access all properties of a NSButtonCell
}

// Hide the button:
searchField.cell?.cancelButtonCell = nil

Цель C

NSSearchField* searchField = [NSSearchField new]

// Change the button:
NSSearchFieldCell* cell = searchField.cell
NSButtonCell* cancelButton = cell.cancelButtonCell
if (cancelButton) {
    // Here you can access all properties of a NSButtonCell
}

// Hide the button:
searchField.cell.cancelButtonCell = nil
person Ky Leggiero    schedule 13.12.2016
comment
Спасибо за ответ. - person gohamgx; 20.12.2016
comment
@gohamgx Добро пожаловать! Если это ответило на ваш вопрос, не забудьте поставить галочку слева. - person Ky Leggiero; 20.12.2016