私はtouchesBegan/Moved/Ended/Cancelledイベントを監視するUIControlから派生したクラスを持っています。これらのイベントの中で、私はそうのようなスーパー、次の応答の両方で同じイベントを呼び出す:カスタムUIControlは常にnil UIEventオブジェクトを送信します
[self.nextResponder touchesEnded:touches withEvent:event];
[self sendActionsForControlEvents:UIControlEventTouchUpInside];
[super touchesEnded:touches withEvent:event];
私はテーブルビューを所有している親コントロールを持っています。テーブルビューのセルにはそれぞれカスタムコントロールの1つが含まれています。クリックに対応するために、私はそれを作成し、そのようにテーブルビューセルにそれを追加してい制御にセレクタを割り当てる:
- (void)myControlTap:(id)sender withEvent:(UIEvent *)event{
//UIEvent is always null!
}
:
[myControl addTarget:self action:@selector(myControlTap:withEvent:)forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:myControl];
親コントロールのセレクタは次のようになります
誰かがUIEventが常にnilである理由を教えてもらえますか?カスタムUIControlの代わりにUIButtonのインスタンスを使用すると、UIEventはnilではありません。さらに、自分のコントロールでsendActionsForControlEventsを呼び出さないと、親コントロールはイベント通知を受け取ることはありません。
あなたの 'myControlTap:withEvent:'メソッドに 'NSLog(@"%@ "、イベント);を置いたときの出力は何ですか? –
出力は "(null)"です。 – leebert