你可以用UIControlEventApplicationReserved自定义事件?(Can yo

2019-08-03 12:54发布

我已经写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];
     }
}

那会甚至工作?

Answer 1:

好吧,这是一个老问题,但我要我的答案添加到这一点。 我真的不能告诉是肯定的,尽管我怀疑它是否可以使用这种面膜为你自己的应用程序。

但我可以告诉你肯定如何使用它。 对于起动该值掩码位在24位,25,26和27。你应该写,只有使用该位,例如自己的枚举:

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

一旦做到这一点,你可以对这些动作进行注册:

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

每一个动作MyPrimaryActionEvent被触发时,自动将收到消息someAction :. 现在,如何触发动作到按钮本身。 在自己的子类UIControl可以触发这种改变如下:

[self sendActionsForControlEvents:MyPrimaryActionEvent];

这将所有动作发送到所有的MyPrimaryActionEvent事件注册的目标。 就大功告成了。



文章来源: Can you make custom events with UIControlEventApplicationReserved?