关于CellControl

本主题提供有关NSCellNSControl的基本信息。

关于NSCell

NSCell类提供了一种在NSView中显示文本或图像的机制,而没有完整的NSView子类的开销。特别是,它通过对App中所有NSCell实例所使用的共享NSText对象的访问,提供了NSText类的许多功能。NSCell对于在NSView的自定义子类中的各个位置放置文本或图像也非常有用。

大多数NSControl类都大量使用NSCell来实现其内部工作。例如,NSSlider使用NSSliderCellNSTextField使用NSTextFieldCellNSBrowser使用NSBrowserCell。向NSControl发送消息通常比直接处理相应的NSCell更简单。例如,NSControls通常在更改Cell属性后调用updateCell:(使Cell显示)。相反,如果直接调用NSCell的相应方法,则NSCell可能不会再次自动显示自身。

NSControl的某些子类(尤其是NSMatrix)将NSCell按某种协作方式组合在一起。因此,使用NSMatrix,你可以实现大小统一的单选按钮组,而无需每个按钮都具有NSView(并且不需要NSText对象作为每个按钮上的文本的字段编辑器)。

NSCell类提供了用于显示文本或图像,编辑文本,设置和获取对象值,维护状态,突出显示和跟踪鼠标的原始方法。NSCell的方法trackMouse:inRect:ofView:untilMouseUp:实现了将动作消息发送到Target对象的机制。但是,NSCell只是抽象地实现了Target/Action功能,它将实现的细节放到了NSActionCell及其子类。

关于NSControl

NSControl是一个抽象超类,提供了用于实现用户界面设备的三个基本功能。首先,作为NSView的子类,NSControl绘制或协调绘制设备的屏幕表示。其次,它通过覆盖NSRespondermouseDown:方法并在响应者链中提供位置来接收并响应用户生成的事件。第三,它实现了sendAction:to:方法,以向NSControlTarget对象发送操作消息。在Application Kit中定义的NSControl的子类是NSBrowserNSButton(及其子类NSPopUpButton),NSColorWellNSImageViewNSMatrix(及其子类NSForm),NSScrollerNSSliderNSTableViewNSTextField。具体的NSControl子类的实例通常简称为控件