您可以使用UIControlEventApplicationReserved创建自定义事件吗?

时间:2009-09-03 06:56:26

标签: iphone events event-handling gesture-recognition

我编写了一个UIControl的子类,它跟踪了我感兴趣的一些手势。在UIControlEvents枚举的文档中,它说有一系列名为UIControlEventApplicationReserved的事件编号“可供应用程序使用”。这是否意味着我可以自由地将此范围的数字用于我自己的自定义事件?

如果是这样,有人可以告诉我如何开火吗?我能想到的显而易见的方法是:

enum {
     ...
     MyCustomEvent = 65,
     ...
};

...

UIEvent* customEvent;

...

for (id target in [self allTargets])
{
     for (NSString* action in [self actionsForTarget:target forControlEvent:MyCustomEvent])
     {
          [self sendAction:NSSelectorFromString(action) to:target forEvent:customEvent];
     }
}

这甚至会起作用吗?

1 个答案:

答案 0 :(得分:21)

好的,这是一个古老的主题,但我要补充一下这个问题。我无法确定你是否可以将这个面具用于你自己的应用程序,即使我怀疑它。

但我可以告诉你如何使用它。对于启动器,此值会屏蔽位置24,25,26和27处的位。您应该编写自己的枚举,仅使用此位,例如:

enum {
    MyPrimaryActionEvent = 1 << 24,
    MySecondaryActionEvent = 1 << 25,
};

完成后,您可以注册以下操作:

[myButton addTarget:self action:@selector(someAction:) forControlEvents: MyPrimaryActionEvent];

每次触发动作MyPrimaryActionEvent时,self都会收到someAction:消息。现在,如何触发该操作取决于按钮本身。在您自己的UIControl子类中,您可以按如下方式触发更改:

[self sendActionsForControlEvents:MyPrimaryActionEvent];

这会将所有操作发送到为MyPrimaryActionEvent事件注册的所有目标。你已经完成了。