NSPopUpButton:NSPopUpButtonCell 已弃用?

NSPopUpButton: NSPopUpButtonCell deprecated?

documentation for NSPopUpButton 状态:

An NSPopUpButton object uses an NSPopUpButtonCell object to implement its user interface.

我从 NSPopUpButtonCell 派生了一个新的 class,它实现了 drawBorderAndBackgroundWithFrame:inView: 以实现自定义绘图。此外,我从 NSPopUpButton 派生了一个新的 class 并使用 cellClass 将我派生的 class 用于它。 (即我没有通过界面生成器工作。)

然而,随着 macOS 10.14 beta 的出现,这个例程不再被调用,我观察 "normal"(即非定制)绘图。

感谢 ,我(认为我)能够将问题定位到这样一个事实,即只有在派生单元中实现 drawInteriorWithFrame:inView: 时,单元才显然调用 drawBorderAndBackgroundWithFrame:inView: .

我找不到关于此的可靠文档。有没有?

如果 macOS 10.14 中会有这样的变化,我认为 Apple 会在 WWDC 2018 上宣布这一点。快速检查 Interface Builder 显示到目前为止没有任何变化。创建 NSPopUpButtonCell 的子 class 以将其用作弹出按钮单元格的 class 仍按预期工作。 我必须提到的是,仅当 drawInterior 也已实现时才会调用 drawBorderAndBackground。由于我以前从未使用过 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")
}
}

希望对您有所帮助。