2009-09-03 66 views
6

我写了一个UIControl的子类,用于跟踪我感兴趣的多个手势。在UIControlEvents枚举的文档中,它指出有一系列名为UIControlEventApplicationReserved的事件编号“可用于应用程序使用”。这是否意味着我可以自由地将这个范围的数字用于我自己的自定义事件?您可以使用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]; 
    } 
} 

会连工作?

+0

好的,我知道这是一个古老的问题,但是你有什么进展吗? – 2010-03-08 19:31:48

回答

20

好的,这是一个老主题,但我要添加我的答案。即使我怀疑自己的应用程序是否可以使用此掩码,但我无法确切地告诉您。

但我可以肯定地告诉你如何使用它。对于起动该值掩码位在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事件注册的目标。你完成了。

相关问题