touchesBegan/Moved/Ended/Cancelled イベントを監視する UIControl から派生したクラスがあります。これらのイベント内で、次のようにスーパー レスポンダーと次のレスポンダーの両方で同じイベントを呼び出します。
[self.nextResponder touchesEnded:touches withEvent:event];
[self sendActionsForControlEvents:UIControlEventTouchUpInside];
[super touchesEnded:touches withEvent:event];
テーブル ビューを所有する親コントロールがあります。テーブル ビューの各セルには、カスタム コントロールが 1 つずつ含まれています。クリックに応答するために、コントロールを作成し、次のようにテーブル ビュー セルに追加するときに、コントロールにセレクターを割り当てます。
[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 が常に nil である理由を教えてもらえますか? カスタム UIControl の代わりに UIButton のインスタンスを使用すると、UIEvent は nil ではありません。さらに、コントロールで sendActionsForControlEvents を呼び出さないと、親コントロールはイベント通知を受け取りません。