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")
}
}
希望对您有所帮助。
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")
}
}
希望对您有所帮助。