У меня есть класс, производный от 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 не равен nil. Кроме того, если я не вызываю sendActionsForControlEvents в моем элементе управления, тогда родительский элемент управления никогда не будет получать никаких уведомлений о событиях.