2011-07-29 2 views
3

私は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を呼び出さないと、親コントロールはイベント通知を受け取ることはありません。

+0

あなたの 'myControlTap:withEvent:'メソッドに 'NSLog(@"%@ "、イベント);を置いたときの出力は何ですか? –

+0

出力は "(null)"です。 – leebert

答えて

0

メソッドとセレクタの "forEvent"を "forEvent"に変更します。

関連する問題