2

パン ジェスチャのサンプルに取り組んでいます。2 つのビューに 1 つのジェスチャーを追加できるか知りたいです。

私のコードは次のとおりです。

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(invokePanGesture:)];
[panGesture setMinimumNumberOfTouches:1];
[panGesture setMaximumNumberOfTouches:2];

[btnGreen addGestureRecognizer:panGesture];
[btnYellow addGestureRecognizer:panGesture];

私のハンドラメソッドは次のとおりです:

- (void)invokePanGesture:(UIPanGestureRecognizer*)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, 
                                     recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}

現在の問題は、私の場合、ジェスチャ認識エンジンが最後のビューのみbtnYellowをそのビューと見なしていることです。2 つの個別の GestureRecognizer オブジェクトを作成すると、機能します。ですから、次のことを明確にしてください:

  1. 複数のビューで単一のジェスチャーを使用することは可能ですか?

  2. はいの場合、どのように?

  3. 今ならなぜ?

前もって感謝します

4

3 に答える 3

5

UIGestureRecognizerのドキュメントから

ジェスチャレコグナイザーは、特定のビューとそのビューのすべてのサブビューに対してヒット テストされたタッチで動作します。したがって、そのビューに関連付ける必要があります。その関連付けを行うには、UIView メソッド addGestureRecognizer: を呼び出す必要があります。ジェスチャ レコグナイザーは、ビューのレスポンダー チェーンに参加しません。

したがって、要約すると、GestureRecognizer が複数のビューで操作できる唯一の方法は、レコグナイザーが他のビューのスーパービューで操作する場合です。

于 2012-05-03T10:29:23.917 に答える
3

ありえないと思います。

https://stackoverflow.com/a/5567684/470964をご覧ください。

またhttps://stackoverflow.com/a/7883902/470964 : 多分それはあなたの問題の解決策でもあります。答えは、GestureRecognizer には設定されるビュー プロパティが 1 つしかないということだと思います。

于 2012-05-03T10:30:21.730 に答える
0

両方のビューに対して同時に同じことを行うようにinvokePanGestureメソッドを作成することはできませんか?

于 2012-05-03T23:36:41.370 に答える