Button
的工作方式
Button
遵循Target-Action
设计模式。Button
是一个用户界面对象,单击该Button
即可将操作消息发送到目标。有关此设计模式的更多信息,请参见Objective-C编程中的概念中的Target-Action。
Button
的大部分工作都是由NSButtonCell
类处理的。如果单击了NSButtonCell
实例的View
并获得了Mouse-Down
事件,则该NSButtonCell
实例会将其操作消息发送到其目标一次,但是只要将鼠标保持在Button Cell
内的同时一直按着鼠标,NSButtonCell
实例也可以连续发送该操作消息。该Button Cell
可以通过多种方式突出显示来表示已被按下——例如,带边框的Button Cell
可能会被压入屏幕,或者在按下Button Cell
时图像或标题可以更改为其他形式。
NSButtonCell
对象必须与NSControl
子类的实例一起使用。如果需要一个Button
(例如Push Button
),请使用包含单个NSButtonCell
实例的NSButton
对象。如果需要一组相关的Button
,例如一组开关
或单选按钮
,请使用包含多个NSButtonCell
实例的NSMatrix
对象。
NSButton
和NSMatrix
均提供控件视图。虽然NSMatrix
要求你直接访问NSButtonCell
对象,但是大多数NSButton
的方法都是NSButtonCell
中相同声明的方法的“覆盖”。(换句话说,NSButton
方法的实现为你自动调用了相应的NSButtonCell
方法,使你不必考虑NSButtonCell
对象的存在。)唯一没有被覆盖的NSButtonCell
方法与用于显示等效键(快捷键)的字体有关的方法,以及用于突出显示或显示NSButton
状态的特定方法(这些方法通常与NSButton
的setButtonType:方法一起设置)。