自定义UIControl始终发送nil UIEvent对象

时间:2011-07-29 22:05:28

标签: objective-c ios uicontrol uievent

我有一个派生自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,那么父控件将永远不会收到任何事件通知。

1 个答案:

答案 0 :(得分:-1)

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