UIControl:sendActionsForControlEvents省略了UIEvent

Ash*_*Ash 5 iphone subclass uicontrol ipad ios

我想实现UIControl的自定义子类.除了一个致使我吐牙的致命问题之外,它的工作非常精美.每当我使用sendActionsForControlEvents:发送动作消息时,它都会省略包含UIEvent.例如,如果我将其链接到具有以下签名的方法:

- (IBAction) controlTouched:(id)sender withEvent:(UIEvent *)event
Run Code Online (Sandbox Code Playgroud)

......事件总是以零回复!问题似乎发生在sendActionsForControlEvents中:

现在,我需要我的IBAction才能确定触摸的位置.我通常是通过从事件中提取触摸来实现的.当然必须有某种方法来确保交付正确的事件?这是使用UIControl的一个非常基本的部分!

有人知道法律解决方法吗?

omz*_*omz 5

我认为这是因为该sendActionsForControlEvents:方法无法知道UIEvent您的控件事件应该与哪个(如果有)相关联。

您可以尝试单独发送所有操作(sendActionsForControlEvents:根据文档复制该方法的作用),因此您可以将它们与以下具体关联UIEvent

UIEvent *event = ...;
UIControlEvents controlEvent = ...;

for (id target in [self allTargets]) {
    NSArray *actions = [self actionsForTarget:target forControlEvent:controlEvent];
    for (NSString *action in actions) {
        [self sendAction:NSSelectorFromString(action) to:target forEvent:event];
    }
}
Run Code Online (Sandbox Code Playgroud)