5

プロジェクトでは、myView、ビュー階層の背後にmyViewUIViewとmyImageがあります。UIImageView

UIWindow
|-UIImageView(myImage)
|-UIView(myView)[画面全体]

次に、ViewControllerのmyImageにジェスチャレコグナイザーを追加しました

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
        tapGesture.numberOfTapsRequired = 1;
        [myImage addGestureRecognizer:tapGesture];

ただし、ジェスチャーはmyImageには影響しませんが、myImageには影響しますsetUserInteractionEnabled:YES。myImageをmyViewの前に配置した場合にのみ影響しますが、どうすればこの問題を解決できますか?

4

2 に答える 2

10

UIViewに到達する前に、明らかにタッチをインターセプトしますUIImageView

UIImageViewの前に置くかUIView、ユーザーの操作を無効にしてUIView、タッチを妨害しないようにすることができます。

タッチイベントをキャッチするよりもきめ細かい必要がある場合は、次のいずれかを実行できます。

  • 設計目的で必要な場合(たとえば、少しマスクする場合)UIViewに上に置きますが、イベントをキャッチしないようにし( )、以下の別のものを使用して、実際に外部のイベントをキャッチします。UIImageViewUIImageViewuserInteractionEnabled = NOUIViewUIImageViewUIImageView
  • UIViewの上にあなたをUIImageView保ち、イベント()をキャッチし続けますuserInteractionEnabled = YESが、あなたをサブクラス化し、またはメソッドUIViewのいずれかをオーバーライドすることによって、それを通過するイベントをフィルタリングします。pointInside:withEvent:hitTest:withEvent:

詳細については、イベント処理に関連する専用のAppleプログラミングガイドを実際に読む必要があります

于 2012-09-09T12:17:47.180 に答える
1

私のコード:

UILongPressGestureRecognizer *press = [[UILongPressGestureRecognizer alloc] 
initWithTarget:self action:@selector(hasLongPressed)];
[press setMinimumPressDuration:0.1f]; //1ms
press.delegate = (id)self;
[self.DGEMLogo addGestureRecognizer:press];

2つのプロパティを実行する必要があります

1.)GestureRecognizerをUIImageView(self.DGEMLogo)[self.DGEMLogo addGestureRecognizer:press]に追加します。

2.)UIImageプロパティのインタラクションをTRUEに設定します

それで全部です。

于 2013-05-23T07:00:13.993 に答える