認識装置が「同時に」作業していることを確認作ってみてください最初にすること。デリゲートでは、次のように定義します。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return (gestureRecognizer.view == otherGestureRecognizer.view);
}
私の経験では、十分にスムーズな操作を行うには十分です。しかし、そうでない場合、私は、レコグナイザの1つからトランスフォームを更新し、プロパティからステートを別のステートに保存するだけです。たとえば、CGFloat
というプロパティをcachedScaleという名前で宣言したとしましょう。このプロパティは、初期設定で1.0に設定されています。次に、あなたのピンチとパンのハンドラでは、次の操作を行いたい:あなただけの周りのビューをドラッグしようとしている場合
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer
{
self.cachedScale *= recognizer.scale;
}
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer
{
CGAffineTransform transform = CGAffineTransformMakeScale(self.cachedScale, self.cachedScale);
self.cachedScale = 1.0;
CGPoint translation = [recognizer translationInView:recognizer.view.superview];
CGAffineTransformTranslate(transform, translation.x, translation.y);
// do something with your transform
}
、あなたはより多くの幸運は、ビューの中心部を変更するのではなく、そのへの変換を適用している可能性が変換する。