在我的應用程序中遇到一些麻煩。我質疑我的做法。UIView touch問題/問題
這裏是一個圖像
基本上我所需要的色輪的透明箱旋轉。我到目前爲止工作。我可以拖動色輪,它會旋轉。問題是我可以觸摸並拖動屏幕上的任何地方,它會旋轉。我只希望它在'窗口'中旋轉。
我基本上添加了一個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的工作?
- 我應該爲這個輪子創建一個自定義UIView,然後將其添加到我的主視圖控制器? 2.a.如果我確實創建了一個定製,我會在觸摸時遇到同樣的問題嗎?
我加了識別器。看起來它只是在UIImageView上工作,這很酷。我只需要玩動畫。如果我使用與我的touchMoved相同的代碼,就會非常不連貫。我需要查看識別器,看看它每隔幾次掃描一次纔會觸發多少次。 – jdruid
嗯,想象一下,UIPanGestureRecognizer在您的情況下可能會更好地工作,因爲它在移動視圖時會精確地跟蹤手指。 – Jamie
我現在正在使用Swipe。我把它做得很好。一旦我獲得了創意,我可能會回到潘,看看它是如何工作的。感謝您的線索! – jdruid