documentation for NSPopUpButton指出:
NSPopUpButton对象使用NSPopUpButtonCell对象来实现其用户界面。
我从NSPopUpButtonCell
派生了一个新类,该类实现了drawBorderAndBackgroundWithFrame:inView:
以实现自定义绘图。另外,我从NSPopUpButton
派生了一个新类,并使用cellClass
将其派生类用于它。 (即我不是通过界面生成器来工作的。)
但是随着macOS 10.14 beta的出现,此例程不再被调用,我观察到“正常”(即非定制)绘图。
多亏了@Marc T.'s answer,我(认为我)才能够将问题定位为以下事实:只有在派生单元中实现了drawBorderAndBackgroundWithFrame:inView:
时,该单元才明显调用drawInteriorWithFrame:inView:
。
我找不到关于此的可靠文档。有没有?
最佳答案
如果macOS 10.14中会有这样的更改,我认为苹果会在WWDC 2018上宣布这一点。对Interface Builder的快速检查显示,到目前为止,没有任何变化。创建NSPopUpButtonCell的子类以将其用作弹出按钮单元的类仍在按预期方式工作。
我要提到的是,只有在同时实现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")
}
}
希望这可以帮助。
关于objective-c - NSPopUpButton:NSPopUpButtonCell是否已弃用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51175125/