我有一个从UIControl派生的类,在该类中,我监视touchesBegan / Moved / Ended / Cancelled事件。在这些事件中,我在 super 响应者和下一响应者上都调用了相同的事件,如下所示:

[self.nextResponder touchesEnded:touches withEvent:event];
[self sendActionsForControlEvents:UIControlEventTouchUpInside];
[super touchesEnded:touches withEvent:event];

我有一个拥有表视图的父控件。表格视图中的单元格每个都包含我的一个自定义控件。为了响应单击,我在创建控件时将选择器分配给控件,并将其添加到表视图单元格中,如下所示:
[myControl addTarget:self action:@selector(myControlTap:withEvent:)forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:myControl];

父控件的选择器如下所示:
- (void)myControlTap:(id)sender withEvent:(UIEvent *)event{
     //UIEvent is always null!
}

有人可以告诉我为什么UIEvent总是为零吗?如果我使用UIButton实例而不是自定义UIControl,则UIEvent不会为nil。此外,如果我没有在控件中调用sendActionsForControlEvents,则父控件将永远不会收到任何事件通知。

最佳答案

在方法和选择器中将“withEvent”更改为“forEvent”。

10-08 06:25