を回して私のコードです:iOSのピンチスケールとツーフィンガーは、ここで同時に
のviewDidLoad:ピンチして回転するため
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinch:)];
[self.canvas addGestureRecognizer:pinch];
pinch.delegate = self;
UIRotationGestureRecognizer *twoFingersRotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(pinchRotate:)];
[[self canvas] addGestureRecognizer:twoFingersRotate];
twoFingersRotate.delegate = self;
コード:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
-(void)pinchRotate:(UIRotationGestureRecognizer*)rotate
{
SMImage *selectedImage = [DataCenter sharedDataCenter].selectedImage;
switch (rotate.state)
{
case UIGestureRecognizerStateBegan:
{
selectedImage.referenceTransform = selectedImage.transform;
break;
}
case UIGestureRecognizerStateChanged:
{
selectedImage.transform = CGAffineTransformRotate(selectedImage.referenceTransform, ([rotate rotation] * 55) * M_PI/180);
break;
}
default:
break;
}
}
-(void)pinch:(UIPinchGestureRecognizer*)pinch
{
SMImage *selectedImage = [DataCenter sharedDataCenter].selectedImage;
[self itemSelected];
switch (pinch.state)
{
case UIGestureRecognizerStateBegan:
{
selectedImage.referenceTransform = selectedImage.transform;
break;
}
case UIGestureRecognizerStateChanged:
{
CGAffineTransform transform = CGAffineTransformScale(selectedImage.referenceTransform, pinch.scale, pinch.scale);
selectedImage.transform = transform;
break;
}
default:
break;
}
}
私の回転はその上で素晴らしい作品自分自身と私のスケールはそれ自身で素晴らしい作品ですが、一緒に働くことはありません。 1つは常に動作し、もう1つは動作しません。 shouldRecognizeSimultaneouslyWithGestureRecognizerを実装すると、2つのジェスチャが互いに闘っているように見え、結果が悪いようです。私は何が欠けていますか? (はい私は<UIGestureRecognizerDelegate>
を実装しました)
はあなたが私に私は両方を同時に適用することができる方法のコード例を与えることができピンチ?私のUIRotationGestureRecognizerには「スケール」プロパティがなく、UIPinchGestureRecognizerには「回転」プロパティがありません。そして私は同時にどちらのAffineを使うのか分からない。 – spentak
美しく動作します。私はこの知識のおかげでずっと良いです! – spentak
私は助けることができてうれしい。私はパンニングの方法について最後のビットを変更しました。また、ジェスチャーレコグナイザーをXIBに入れて、 'viewDidLoad'にコードをつける必要もありません。レコグナイザをビューにドラッグし、レコグナイザからFile's Ownerへのコントロールをドラッグして、レコグナイザのデリゲートとアクションアウトレットを接続します。 –