私のアプリに少し問題があります。私は私のアプローチに疑問を呈しています。UIViewタッチの問題/質問
は、ここで基本的に私は、透明な箱でスピンするカラーホイールを必要とする画像
です。私がこれまでにしてきたことが働いています。私はカラーホイールをドラッグすることができ、それは回転します。問題は画面上のどこにでも触れてドラッグすることができ、回転することです。私はそれを 'ウィンドウ'内で回転させたいだけです。
基本的にUIViewとUIImageViewを追加し、アウトレットをImageViewに追加し、touchesBeganとtouchesMovedにコードを追加してアニメーションを実行しました。ホイールはフルサークル画像で、サブビューは画像の下半分を表示しないように「クリップ」されています。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *thisTouch = [touches anyObject];
delta = [thisTouch locationInView:wheelImage];
float dx = delta.x - wheelImage.center.x;
float dy = delta.y - wheelImage.center.y;
deltaAngle = atan2(dy,dx);
initialTransform = wheelImage.transform;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint pt = [touch locationInView:wheelImage];
float dx = pt.x - wheelImage.center.x;
float dy = pt.y - wheelImage.center.y;
float ang = atan2(dy,dx);
//do the rotation
if (deltaAngle == 0.0) {
deltaAngle = ang;
initialTransform = wheelImage.transform;
}else
{
float angleDif = deltaAngle - ang;
CGAffineTransform newTrans = CGAffineTransformRotate(initialTransform, -angleDif);
wheelImage.transform = newTrans;
currentValue = [self goodDegrees:radiansToDegrees(angleDif)];
}
}
今...私の質問は、以下の通りである:
- どのように私はtouchesMovedを得ることができます/ UIViewのかUIImageView上で動作するようにONLY始めましたか?
- このホイールのカスタムUIViewを作成してメインビューコントローラに追加するだけですか? 2.a.私が習慣を作ったら、私は触れて同じ問題を抱えていますか?
私は認識装置を追加しました。 UIImageViewだけで動作しているようですね。アニメーションだけで遊ぶ必要があります。私がtouchedMovedと同じコードを使用すると、非常に不安定になります。どのくらいの頻度で発火したかを知るためには、スワイプごとに1回だけ認識機能を調べる必要があります。 – jdruid
ええと、UIPanGestureRecognizerは、視点を横切って正確に指を追跡するので、あなたのケースではよりうまくいくかもしれません。 – Jamie
私は現在、スワイプを使用しています。私はそれが素晴らしい仕事を得た。私がクリエイティブを落とすと、私はパンに戻って、それがどのように機能するか見ることができます。リードしてくれてありがとう! – jdruid