2012-04-08 13 views
0

背景:アプリケーションで発生するすべてのUITouchを調べ、UITouchが特定のUIImageViewの内部にないかどうかを確認する必要があります。UIGestureRecognizerがUIWindowに追加された後、iPadが応答しなくなるのはなぜですか?

WildcardGestureRecognizerは非常に有望で、私はそれを試しました。 (コードはこちら): How to intercept touches events on a MKMapView or UIWebView objects?

これは、サンドボックス/すばやく作成されたアプリケーションに適しています。しかし、そのアプリケーションは、実際のターゲットプロジェクトが持つ複雑さを反映していませんでした。ターゲットプロジェクトには、テーブルビューコントローラなどがあります。

WildcardGestureRecognizerをもっと複雑なiPadアプリケーションに追加した後、ジェスチャ認識機能が追加されてクリックが1回発生した後で、他のコントロールは機能しません。

ここで私がアイデアを試していたコードです。ここでも、UIWindowにジェスチャ認識機能を追加した後で動作するかどうかを確認するために、サンドボックスコードにはまだコントロールがありません(Table View ControllerやUIButtonなど)。

ジェスチャ認識機能を追加するためにUIWindow以外のものを選択する必要がありますか、または同じ問題に関係なく実行する必要がありますか?より良い方法がありますか?

サンドボックスコード:、UIWindowサブクラスを作成し、あなたのXIBにそれを使用してhitTest:withEvent:を上書き:https://github.com/finneycanhelp/GestureKata

答えて

1

あなたは別のアプローチをしようとする場合があります。タッチイベントを受け取るために「選択された」ビューを返します。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView *v; 

    v = [super hitTest:point withEvent:event]; 
    if (v == myImageView) { 
     // Do something. Maybe return nil to prevent the touch from getting 
     // sent to the image view. 
    } 

    return v; 
} 

このメソッドを無効にすると、デバッグ時に役立ちます。

+0

いいですね。私はそれを試してみましょう。ありがとうございました。 :) – finneycanhelp

+0

素晴らしい作品!ありがとう! – finneycanhelp

関連する問題