2012-05-14 9 views
0

私はUIWindowをサブクラス化しましたが、スクリーンとのやりとりのため何らかの理由で - (void)sendEvent:(UIEvent *)イベントが2回呼び出されます。それはなぜ起こるだろう?iOS 5.0 sendEventは2回呼び出されました

+0

:)を表示するために送信されるイベントの数の変化に気づきビューにドラッグ/スワイプしてみてください、何のイベントが送信されていますか?その情報は役に立ちます...私は名前がtouchesBeganとtouchesMovedであると想像します。 – borrrden

+0

私は画面に触れる。 sendEvent/UIWindowはレスポンダチェーンのルートにあります。他のビューがtouchesにこのイベントを取得する前にそれ自身のBeanメソッドを使用すると、ビューはUIWindowのhitTestメソッドによって検出されます。私のタッチは2つのsendEventsを生成する..両方のビューを見つける..しかし、私は2つのイベントが簡単なタッチで生成した理由を理解していない。 – Zsolt

+0

メソッド内のイベントの名前をログに記録します。詳細情報を取得するのに役立ちます。 – borrrden

答えて

2

のために呼ばれるとのSendEventをオーバーライドします:メソッド

-(void) sendEvent:(UIEvent *)event 
{ 
    NSLog(@"%@",event); 
    [super sendEvent:event]; 
} 

はおそらく、あなたはTouchesBeganを担当するイベントに気づくでしょうし、 TouchesEnded(タップ用)。これは、Viewをサブクラス化し、タッチ関連のメソッドをオーバーライドすることによってテストできます。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"tocuhesBegan"); 
} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesMoved"); 
} 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesEnded"); 
} 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesCancelled"); 
} 

また、まあ

+0

正確には..これを実現していないために愚かな感じ.. ..ありがとう。 – Zsolt

0

のSendEventが(アプリデリゲートの)サブクラスウィンドウ、デバッグ目的のためにfingerDownとallFingersUp

関連する問題