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对象。

NSButtonNSMatrix均提供控件视图。虽然NSMatrix要求你直接访问NSButtonCell对象,但是大多数NSButton的方法都是NSButtonCell中相同声明的方法的“覆盖”。(换句话说,NSButton方法的实现为你自动调用了相应的NSButtonCell方法,使你不必考虑NSButtonCell对象的存在。)唯一没有被覆盖的NSButtonCell方法与用于显示等效键(快捷键)的字体有关的方法,以及用于突出显示或显示NSButton状态的特定方法(这些方法通常与NSButtonsetButtonType:方法一起设置)。