3

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

[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 不为零。此外,如果我不在我的控件中调用 sendActionsForControlEvents,那么父控件将永远不会收到任何事件通知。

4

1 回答 1

-1

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

于 2012-08-18T08:40:50.373 回答