0

背景: アプリケーションで発生するすべての UITouch を見て、UITouch が特定の UIImageView 内にないかどうかを確認する必要があります。

WildcardGestureRecognizer は非常に有望に見えたので、試してみました。(コードはこちら): MKMapView または UIWebView オブジェクトのタッチ イベントをインターセプトする方法は?

サンドボックス/迅速に作成されたアプリケーションに最適です。ただし、そのアプリケーションは、実際のターゲット プロジェクトの複雑さを反映していませんでした。ターゲット プロジェクトには、Table View Controller などがあります。

より複雑な iPad アプリケーションに WildcardGestureRecognizer を追加した後、ジェスチャ レコグナイザーが追加されて 1 回のクリックが発生した後、他のコントロールはどれも機能しないことがわかりました。

これは、私がアイデアで遊んでいたコードです。繰り返しになりますが、サンドボックス コードにはまだコントロール (Table View Controller や UIB​​utton など) がなく、ジェスチャー認識エンジンを UIWindow に追加した後に動作するかどうかを確認できません。

ジェスチャ認識機能を追加するために UIWindow 以外のものを選択する必要がありますか、それとも同じ問題に遭遇するのでしょうか? より良い方法はありますか?

サンドボックス コード: https://github.com/finneycanhelp/GestureKata

4

1 に答える 1

1

UIWindowサブクラスを作成し、それを XIB で使用し、 override という別のアプローチを試すこともできますhitTest:withEvent:。タッチイベントを受け取るために「選択」されたビューを返します。

- (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;
}

このメソッドをオーバーライドすると、デバッグ時にも役立ちます。

于 2012-04-08T22:39:00.873 に答える