2011-06-01 29 views
0

如何在自定义控件上定义自定义可发送操作(可以通过InterfaceBuilder @ Xcode4连接)?如何在自定义控件上定义自定义可发送操作? (可以在IB中识别)

对于实例,UIButton可以调用许多事件的操作。 (Touch up Inside,Touch Up Outside ...等),并且我们可以通过Interface Builder将这些事件与IBActions连接起来。

请不要谈论委托模式。就我个人而言,我认为,实施多种协议使我们感到恶心,很难阅读对象的核心角色。因为选择器名称由发件人定义,而不是由控制器定义。我想要使​​用更清晰的控制器主题的可读方法名称。

因此,我讨厌使用委托模式作为基本的基础架构,除非我开发出非常简单的Hello Blah应用程序。

我认为定义字段NSInvocation *作为IBOutlet会很好。因为它在同一时间抽象目标和选择器。但现在Interface Builder不能识别它。

那么,如何定义IB可识别的可发送动作。

PS。我知道扩展NSControl的CustomControl只能调用单个目标操作。我想要多个可发送事件,并且我想让我的对象不能查看或控制。 (我的意思是轻量物体)

回答

0

您应该子类UIControl并定义您自己的控件事件。由于UIControlEventNSInteger,因此您可以为其分配自己的枚举值。您最多可以有8个控制事件(按照documentation)从

enum { 
    ControlEvent1 = 0x0F000000 << 0, 
    ... 
    ControlEvent8 = 0x0F000000 << 7 
}; 

去添加和删除目标,行动仍然同其他控件。您可以使用[control sendActionsForControlEvents:ControlEvent1]触发控制事件。

+0

我认为这种方法只是黑客的事情。而Interface Builder无法识别它。如果我想要扩展事件驱动的基础知识,我不在乎苹果的一个。因为制作自己很容易。 – jeeeyul 2011-06-02 00:56:51