NSPopUpButton: NSPopUpButtonCell устарела? - PullRequest
0 голосов
/ 04 июля 2018

Документация для NSPopUpButton гласит:

Объект NSPopUpButton использует объект NSPopUpButtonCell для реализации своего пользовательского интерфейса.

Я получил новый класс от NSPopUpButtonCell, который реализует drawBorderAndBackgroundWithFrame:inView: для достижения пользовательского рисования. Кроме того, я получил новый класс из NSPopUpButton и использую cellClass, чтобы использовать мой производный класс для него. (т.е. я не работаю через конструктор интерфейсов.)

Однако, с появлением бета-версии macOS 10.14, эта процедура больше не вызывается, и я наблюдаю "нормальный" (т.е. не настроенный) рисунок.

Благодаря ответу @ Marc T. я (как мне кажется) смог локализовать проблему с тем фактом, что ячейка, очевидно, вызывает drawBorderAndBackgroundWithFrame:inView:, только если drawInteriorWithFrame:inView: реализован в производная клетка.

Я не смог найти надежной документации по этому Есть ли?

1 Ответ

0 голосов
/ 05 июля 2018

Если в macOS произойдет такое изменение 10.14, я предполагаю, что Apple объявил бы об этом на WWDC 2018. Быстрая проверка в Интерфейсном Разработчике показала мне, что до сих пор ничего не изменилось. Создание подкласса NSPopUpButtonCell для использования его в качестве класса для ячейки всплывающей кнопки все еще работает, как и ожидалось. Я должен упомянуть, что drawBorderAndBackground вызывается только в том случае, если также реализован drawInterior. Поскольку я никогда ранее не использовал drawBorderAndBackground, я не могу сказать, является ли это изменением с предыдущих версий на 10.14 или нет.

class Cell: NSPopUpButtonCell {

override func drawInterior(withFrame cellFrame: NSRect, in controlView: NSView) {
    super.drawInterior(withFrame: cellFrame, in: controlView)
    print("drawInterior")
}

override func drawBorderAndBackground(withFrame cellFrame: NSRect, in controlView: NSView) {
    super.drawBorderAndBackground(withFrame: cellFrame, in: controlView)
    print("drawBorderAndBackground")
}
}

Надеюсь, это поможет.

...