ビデオでしか記述できないような言葉で説明しようとします。RotationGesture後にUIViewをパンするとビューが崩壊する
私は、単一の画像ビューを含むストーリーボードで簡単なiOSアプリケーションを作成しました。私は2つのジェスチャ認識器を追加しました:UIPanGestureRecognizerとUIRotationGestureRecognizerとそれに対応するIBActions。
初めてシミュレータでアプリケーションを起動すると、イメージビューが正しくパンします。画像ビューも正しく回転します。ただし、回転後、以降のパンは失敗します。回転後にパンしようとすると、パンの方向にかかわらず、画像は急速にゼロにスケールされ、消えます。つまり、消えるポイントまで崩壊するか、または消滅します。
ジェスチャ認識プログラムは、次のコードを使用して作成されます。 myImageViewはIBOutlet UIImageViewとして設定されています。
UIPanGestureRecognizer *panRec = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(processPan:)];
[myImageView addGestureRecognizer:panRec];
UIRotationGestureRecognizer *rotRec = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(processRotation:)];
[myImageView addGestureRecognizer:rotRec];
私が知っている限り、関連する行動を書いています。基本的には、iOSのドキュメントにある方法のわずかな変更です。これらを以下に示します。
-(IBAction)processPan:(UIPanGestureRecognizer *)sender
{
if(sender.state == UIGestureRecognizerStateChanged)
{
CGPoint translation = [sender translationInView:self.view];
CGRect newFrame = myImageView.frame;
newFrame.origin.x += translation.x;
newFrame.origin.y += translation.y;
myImageView.frame = newFrame;
[sender setTranslation:CGPointMake(0, 0) inView:self.view];
}
}
-(IBAction)processRotation:(UIRotationGestureRecognizer *)sender
{
if(sender.state == UIGestureRecognizerStateChanged)
{
myImageView.transform = CGAffineTransformRotate(myImageView.transform, sender.rotation);
[sender setRotation:0];
}
}
私は何が欠けていますか?私はこれで新しく、うまくいけば私の無知は容認されるでしょう。
Xcodeバージョン4.2.1をMacBookのOS Xバージョン10.7.3で実行しています。私の質問を読む時間をとってくれてありがとう。スタックオーバーフローは信じられないほどのリソースです!
-Dave
どちらのジェスチャーがあるため、彼らが見ているビュー上で行われている回転の破壊される可能性があります。あなたはUIImageViewの上に明確なビューを追加して、認識装置を透明なビューに取り付けることができます。 –